gpt4 book ai didi

java - 有没有办法做到这一点,这样我就没有 64 个 if 语句?

转载 作者:行者123 更新时间:2023-12-02 09:17:39 25 4
gpt4 key购买 nike

我被告知从一个 txt 文件创建一个二维数组,其中包含“carModel,carColor”,后跟一个新行。二维数组为 8x8,每次出现某个 carmore 和 carcolor,它们各自代表计数的 [x][y] 坐标就会增加 1。

到目前为止,我已经读取了该文件,从该文件创建了一个二维数组,并使用该二维数组创建了一个输出,每个槽都填充了零,但我似乎能找到更新每个模型的唯一方法,颜色计数是如果我手动创建 64 个 if 语句来检查它们是否出现在列表中 n+ 次。当然必须有其他方法吗?

例如,当我的扫描仪读取列表时,我需要它检查列表是否重复汽车型号、汽车颜色,如果是,则更新该汽车制造商和颜色的计数。

这是我迄今为止的代码:

public static void main (String [] args) throws Exception
{
String [][] cars = new String [8][8];
ArrayList <String> colors = new ArrayList<>();
colors.add("BLUE ");
colors.add("BLACK ");
colors.add("BROWN ");
colors.add("GREEN ");
colors.add("RED ");
colors.add("SILVER");
colors.add("WHITE ");
Collections.sort(colors);
ArrayList <String> models = new ArrayList<>();
models.add("Escape ");
models.add("Explorer");
models.add("F150 ");
models.add("F250 ");
models.add("Flex ");
models.add("Mustang ");
models.add("Taurus ");
Collections.sort(models);
cars [0][0] = "_____ ";
for (int a = 1; a < cars.length; a++)
{
cars[0][a] = (models.get(a-1)) + " ";
}
for (int b = 1; b < cars.length; b++)
{
cars[b][0] = (colors.get(b-1)) + " ";
}
for (int fir = 1; fir < cars.length; fir++)
{
for (int sec = 1; sec < cars[1].length; sec++)
{
if (cars[fir][sec] == null)
{
cars[fir][sec] = "0 ";
}
}
}
for (int first = 0; first < cars.length; first++)
{
for (int second = 0; second < cars[first].length; second++)
{
System.out.print(cars[first][second]);
}
System.out.println();
}
File file = new File ("C:\\Users\\delta\\Documents\\NetBeansProjects\\SchoolWork\\cars.txt");
Scanner sc = new Scanner(file);
String ab = sc.nextLine();
while (ab != null)
{
String [] nums = sc.nextLine().split(" ");
for (int i = 0; i < nums.length;i++)
{
System.out.println(nums[i]);
}
}
}

输出应该看起来像这样: enter image description here

最佳答案

您需要做的是使用ArrayList.indexOf()方法。

  1. 获取颜色索引。
  2. 获取模型的索引。

然后使用它们来设置或增加 8x8 数组中的条目。每次您阅读汽车的颜色和型号时。


int[][] count = new int[][];

while (reading in data) {
get color
get model
int row = modelList.indexOf(model)
int col = colorList.indexOf(color)
count[row][col]++
}

我还建议您修剪颜色和模型周围的空白。它会使调试变得困难,并且只要使用 System.out.printf(),您就不需要它来格式化输出。

关于java - 有没有办法做到这一点,这样我就没有 64 个 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58886128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com