我正在做一个Java项目,我想对相同的字符串数组进行排序,然后计算每个汽车品牌有多少个。我被困传递数组到int变量。需要建议。谢谢。

public class SortCars {

public static void main(String[] args) {

    String[] cars = {"honda", "toyota", "honda", "toyota"};
    String[] honda = new String[5];
    String[] toyota = new String[5];
    int numOfHonda;
    int numOfToyota;

    for (int i = 0; i < cars.length; i++) {
        if (cars[i].equals("numOfHonda")) { //
            honda[i] = cars[i];
            honda[i] = numOfHonda; // stuck here
            numOfHonda++;
        }
    }

}


}

最佳答案

您似乎对String和int值感到困惑。因为您说的是编程的第一周,并且从我从问题中了解的内容出发。这就是您想要做的:-

public static void main(String[] args) {

    String[] cars = {"honda", "toyota", "honda", "toyota"};
    String[] honda = new String[5];
    String[] toyota = new String[5];
    int numOfHonda = 0;  // you need to initialize these int variables
    int numOfToyota = 0;

    for (int i = 0; i < cars.length; i++) {
        if (cars[i].equals("honda")) { // if cars has element honda
            honda[i] = cars[i];        // putting cars element in honda array
            numOfHonda++;             //incrementing value of numOfHonda by 1
        }
        else if(cars[i].equals("toyota")){
        toyota[i] = cars[i];
        numofToyota++;

    }
 }


现在,打印numOfHonda和numofToyota将分别为您提供本田和丰田的数量。

除了我的回答,我还要解决在代码中发现的一些错误。

int numOfHonda;     //initilize your variable. Otherwise you will get compilation error! make it  = 0 in this case.
int numOfToyota;    // same here, initialize to 0.


if (cars[i].equals("numOfHonda"))

在这里,您尝试将cars [i]元素与字符串“ numOfHonda”进行比较。如果您查看代码,则没有这样的字符串声明为“ numofHonda”。有一件事情是int类型变量

equals()方法不将int类型与String进行比较。它总是将String与String进行比较。而且,您已经将int变量numofHonda放入了“”这一事实与事实不符! “ numofHonda”和numHonda是不同的东西!

honda[i] = numOfHonda;

你被困在这里是因为你知道你在这里做什么?
您正在尝试放置int类型变量(numOfHonda是int类型的记忆吗?)
在String数组中。这是不可能的。这是类型不匹配。任何类型的数组的基本定义是它拥有相同类型的元素。因此,honda []无法存储int类型值。

希望您现在有更好的视野。保持学习。

10-04 17:47