【问题标题】:Two arrays into one by the number of the first one两个数组按第一个数组的数量合二为一
【发布时间】:2015-07-02 11:36:11
【问题描述】:

我有两个这样的列表:

 1. [apple, orange]
 2. [cyan, magenta, yellow, black]

我希望算法像这样打印:

 1. [apple:cyan,magenta]
 2. [orange:yellow, black]

我做错了什么?

public static void main(String[] args) throws IOException {
String file_name_Colors = "D:/colors.txt";
String file_name_Fruts = "D:/fruts.txt";
Scanner input = new Scanner(System.in);
int number_Colors;
int number_Fruts;
number_Colors = input.nextInt();
number_Fruts = input.nextInt();
try{
ReadFileColors fileColors = new ReadFileColors(file_name_Colors, number_Colors);
ReadFileFruts fileFruts = new ReadFileFruts(file_name_Fruts, number_Fruts);
String[] aryLines = fileColors.OpenFileColors();
String[] aryLinesFruts = fileFruts.OpenFileFruts();
List<String> listColorPleaseTY = new ArrayList<>();
List<String> listFruts_Fruts = new ArrayList<>();
int numberColorPlease;
int numberFrutsPlease;
for(numberColorPlease=0; numberColorPlease<aryLines.length; numberColorPlease++){
    listColorPleaseTY.add(aryLines[numberColorPlease]);
}
for(numberFrutsPlease=0; numberFrutsPlease<aryLinesFruts.length; numberFrutsPlease++){
    listFruts_Fruts.add(aryLinesFruts[numberFrutsPlease]);
}
System.out.println(listFruts_Fruts);
System.out.println(listColorPleaseTY);

List<String> subItemslistnewone = new ArrayList<String>(listColorPleaseTY.subList(0, number_Colors));
System.out.println(subItemslistnewone);
    } catch (IOException e){ System.out.println( e.getMessage() ); }
}

【问题讨论】:

  • 请分享你目前写的代码。
  • 颜色已定义?
  • 您想始终将两种颜色与一种给定的水果匹配吗?或者你使用什么标准?
  • 数字,我想将 x 数量的水果分配给 x 数量的颜色
  • 请定义您要正确解决的问题(单个示例需要大量假设)以及您的代码遇到的问题(我们不应该自己运行它弄清楚)。

标签: java arrays list


【解决方案1】:

我不确定分发标准,您需要这样的东西吗?

public static void main(String[] args) {

    List<String> fruits = Arrays.asList("apple","orange");
    List<String> colours = Arrays.asList("cyan","magenta","yellow","black");
    List<String> result = new ArrayList<>(fruits.size());
    for (int i = 0; i < fruits.size(); i++) {
        StringBuilder sb = new StringBuilder();
        sb.append(fruits.get(i));
        sb.append(":");
        int begin = (i*colours.size())/fruits.size() + 1;
        int end = ((i+1)*colours.size())/fruits.size();
        sb.append(colours.get(begin-1));
        for (int j = begin; j < end; j++) {
            sb.append(",");
            sb.append(colours.get(j));
        }
        result.add(sb.toString());
    }
    for (int i = 0; i < result.size(); i++) {
        System.out.println((i+1)+". ["+result.get(i)+"]");
    }
}

【讨论】:

  • 它只适用于 2 种水果和 4 种颜色,我希望它适用于大量水果和大量颜色,非常感谢,我至少有一些东西。我想将 x 数量的颜色分配给 x 数量的水果。再次感谢您。
  • 让我们这样说: List fruits 包含 1000 个水果, List colours 包含 5000 个,我想每次给不同数量的水果分配不同数量的颜色。一次我想打印 7 个水果,每种水果 2 种颜色,另一次我想打印 50 个水果,每种 10 种颜色。
  • 非常感谢,我已经对其进行了修改,这正是我想要的。谢谢。
猜你喜欢
  • 2012-03-31
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 2022-11-12
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
相关资源
最近更新 更多