当前位置: 首页 > 知识库问答 >
问题:

如何从getters检查用户输入和字段

漆雕升
2023-03-14
 public void chooseFlight(ArrayList<Flight> flightList) {
    System.out.println("Choose flight by ID: ");
    int pickedFlight = scanner.nextInt();
    scanner.nextLine();

    for (Flight tempFlight : flightList) {
        if (pickedFlight == tempFlight.getId()) {
            System.out.println("You picked flight from: " + tempFlight.getFrom() + ", to "
                    + tempFlight.getTo() + ". Prices are: | Economic class: "
                    + tempFlight.getPriceForEconomicClass() + " | Business class : "
                    + tempFlight.getPriceForBusinessClass() + " | First class: "
                    + tempFlight.getPriceForFirstClass());
            selectedFlight = tempFlight;
            break;
        } else {
            System.out.println("Flight ID doesnt exist");
        }
        System.exit(0);
    }
}

我就是这样保存航班的:

Flight flight1 = new Flight(1, "Moscow", "Belgrade", 300, 600, 850, "gC49");
    Flight flight2 = new Flight(2, "Paris", "Dortmund", 250, 290, 400, "soe4");
    Flight flight3 = new Flight(3, "Podgorica", "Nis", 25, 40, 80, "sx33");
    Flight flight4 = new Flight(4, "London", "Miami", 600, 1500, 2500, "zcl3");

ArrayList<Flight> flightsArrayList = new ArrayList<>();
    flightsArrayList.add(flight1);
    flightsArrayList.add(flight2);
    flightsArrayList.add(flight3);
    flightsArrayList.add(flight4);

运行上面的第一个方法后的输出是如果我输入了除1号以外的任何ID

航班ID不存在尽管我输入了与航班ID匹配的ID。

} else {
            System.out.println("Flight ID doesnt exist");
        }
        System.exit(0);

程序运行良好,我只是不知道哪里是我的错误。

共有1个答案

鲍鸿波
2023-03-14
for (Flight tempFlight : flightList) {
        if (pickedFlight == tempFlight.getId()) {
            System.out.println("You picked flight from: " + tempFlight.getFrom() + ", to "
                    + tempFlight.getTo() + ". Prices are: | Economic class: "
                    + tempFlight.getPriceForEconomicClass() + " | Business class : "
                    + tempFlight.getPriceForBusinessClass() + " | First class: "
                    + tempFlight.getPriceForFirstClass());
            selectedFlight = tempFlight;
            break;
        } else {
            System.out.println("Flight ID doesnt exist");
        }
        System.exit(0);
    }

您的问题似乎是一个范围问题:

对于您检查的每个元素,如果没有找到,则打印该消息,在循环结束时,您调用system.exit(0);,这意味着您只检查列表的第一个元素。

您需要执行以下操作:

boolean found = false;
for (Flight tempFlight : flightList) {
        if (pickedFlight == tempFlight.getId()) {
            System.out.println("You picked flight from: " + tempFlight.getFrom() + ", to "
                    + tempFlight.getTo() + ". Prices are: | Economic class: "
                    + tempFlight.getPriceForEconomicClass() + " | Business class : "
                    + tempFlight.getPriceForBusinessClass() + " | First class: "
                    + tempFlight.getPriceForFirstClass());
            found = true;
            break;
        }
    } // this ends the for loop

if ( found ) {
  // you actually found the Flight
} else {
            System.out.println("Flight ID doesnt exist");
        }
        System.exit(0);
Flight found = null;
for (Flight tempFlight : flightList) {
        if (pickedFlight == tempFlight.getId()) {
            System.out.println("You picked flight from: " + tempFlight.getFrom() + ", to "
                    + tempFlight.getTo() + ". Prices are: | Economic class: "
                    + tempFlight.getPriceForEconomicClass() + " | Business class : "
                    + tempFlight.getPriceForBusinessClass() + " | First class: "
                    + tempFlight.getPriceForFirstClass());
            Flight = tempFlight;
            break;
        }
    } // this ends the for loop

if ( found != null ) {
  // you actually found the Flight
} else {
            System.out.println("Flight ID doesnt exist");
        }
        System.exit(0);
 类似资料:
  • 我试图检查用户是否输入了字符串。如果用户输入了字符串,我的程序应该输出错误消息。如果用户输入了整数,我的程序应该继续运行 这是我到目前为止的代码,我需要添加另一个条件来检查用户是否输入字符串,我尝试了一些方法,但它们不起作用

  • 问题内容: 我试图通过限制用户可以输入的内容来使用户输入不使程序崩溃,例如: 只是一个int 在1到30之间 我编写的代码只能在一定程度上起作用。如果您输入的内容不是整数,它将对其进行检查并要求您再次输入。如果您继续输入除int以外的任何内容,则再次输入。我还有另一个while循环,如果它确实输入一个int,并且它在1-30区域之外,则它将要求用户再次输入。但是,此后,如果用户键入另一个“除int

  • 问题内容: 我正在学习“困难方式” Python35。下面是原始代码,我们被要求对其进行更改,以便它可以接受其中不包含0和1的数字。 这是我的解决方案,可以很好地运行并识别浮点值: 通过搜索类似的问题,我找到了一些答案,这些答案可以帮助我编写另一个解决方案,如下面的代码所示。问题是,使用isdigit()不允许用户输入浮点值。因此,如果用户说要取50.5%,它将告诉他们学习如何键入数字。否则它适用

  • 我正在做一个简单的程序,要求用户输入0-19之间的五个数字。我想在每个数字后面添加一些东西(比如if语句),以确保它在这个范围内。如果不是,程序应该说“请再读指令”,然后system.exit(0)。这段代码是相关的: 如有任何帮助,将不胜感激。

  • 问题内容: 我有一个简单的PHP邮件程序脚本,该脚本从通过POST提交的表单中获取值并将其邮寄给我: 如何清除输入内容? 问题答案: 用清理发布变量。 这里的例子。喜欢:

  • 如果找到manager用户,则将表设置为可编辑,并执行以下操作: