关于我的代码与数组

时间:2013-10-30 10:36:56

标签: java arrays

我需要一点帮助。我希望它通过数组并找到所有目的地与输入的目的地相同,但这只能打印出来1.任何建议? 谢谢。

for (int x = 0; x<40;x++){
    String flight;

    Scanner input = new Scanner (System.in);
    System.out.println("Enter Flight destination to find: ") ;
    flight = input.next();
    if (plane[x].destination.equals(flight)){
        System.out.println("Found destination! " + "\t" + "at array  " + x);
        System.out.println(plane[x].flightid + "\t" + plane[x].origin + "\t" + plane[x].destination);
        break;   
    }
}

2 个答案:

答案 0 :(得分:1)

break语句中不需要ifbreak退出循环,这就解释了为什么你只能看到一个航班。您还需要将输入移动到循环外部,否则您需要在平面循环的每次迭代中输入。

Scanner input = new Scanner (System.in);
System.out.println("Enter Flight destination to find: ") ;
String flight = input.next();

for (int x = 0; x<40;x++){
    if (plane[x].destination.equals(flight)){
        System.out.println("Found destination! " + "\t" + "at array  " + x);
        System.out.println(plane[x].flightid + "\t" + plane[x].origin + "\t" + plane[x].destination);
    }
}

答案 1 :(得分:0)

找到第一个目的地后,您正在打破for循环:

if (plane[x].destination.equals(flight)){
                System.out.println("Found destination! " + "\t" + "at array  " + x);
                System.out.println(plane[x].flightid + "\t" + plane[x].origin + "\t" + plane[x].destination);
                break;   

}

所以循环的其余部分没有被执行。您需要删除此break;声明。

if (plane[x].destination.equals(flight)){
                    System.out.println("Found destination! " + "\t" + "at array  " + x);
                    System.out.println(plane[x].flightid + "\t" + plane[x].origin + "\t" + plane[x].destination);
//break;
}