为了账号安全,请及时绑定邮箱和手机立即绑定

退出 do-while 循环应用程序

退出 do-while 循环应用程序

慕尼黑8549860 2022-07-20 16:30:43
我的控制台应用程序有一点问题。应用程序应该从用户那里获取数字并将它们添加到列表中,但如果输入是“c”,它应该关闭。我不知道如何在不挂起应用程序Scanner.nextLine()并退出循环的情况下验证“c”变量。public void getNumbersFromUser() {  Scanner scanner = new Scanner(System.in);  int number;  boolean flag = true;  do{     System.out.println("Enter a number");     while(!scanner.hasNextInt()) {        System.out.println("Thats not a number !");        scanner.next();     }        number = scanner.nextInt();        list.add(number);        System.out.println(list);  }  while(flag);
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

最好使用 获取输入next(),而不是添加第三方库,创建一个辅助方法来检查输入是否为数字:


辅助方法:


public static boolean isNumeric(String strNum) {

    try {

        int d = Integer.parseInt(strNum);

    } catch (NumberFormatException | NullPointerException nfe) {

        return false;

    }

    return true;

}

在 do/while 循环中使用它:


Scanner scanner = new Scanner(System.in);

List<Integer> list = new ArrayList<>();

boolean flag = true;


do {

    System.out.println("Enter a number");

    String input = scanner.next();


    if(!isNumeric(input)) {

        if(!input.equals("c")) {

            System.out.println("Thats not a number !");

            continue; // will restart the loop

        }

        else break; // will exit if input is "c"

    }

    else {

        list.add(Integer.parseInt(input));

        System.out.println(list);

    }

}

while(flag);

现场示例在这里。


查看完整回答
反对 回复 2022-07-20
?
临摹微笑

TA贡献1982条经验 获得超2个赞

一种方法是使用Scanner.next(),它将阻止等待输入,并Integer.parseInt()自己检查输入:


List<Integer> list = new ArrayList<>();

Scanner scanner = new Scanner(System.in);


do {

    System.out.println("Enter a number");

    String next = scanner.next();

    if (next.equals("c")) {

        break;

    }


    try {

        int number = Integer.parseInt(next);

        list.add(number);

        System.out.println(list);

    } catch (NumberFormatException ex) {

        System.out.println("That's not a number !");

    }

} while (true);


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信