gpt4 book ai didi

java - 从 while 循环退出在 java 中不起作用

转载 作者:行者123 更新时间:2023-12-01 17:41:22 25 4
gpt4 key购买 nike

我是java编程新手。我想计算总和,并希望在用户输入“N”时退出程序,如果用户输入“Y”则再次循环。但是,即使我也无法退出循环输入“N”。

public class Program {



public static void main(String[] args) {
boolean a=true;
while (a) {
System.out.println("enter a number");
Scanner c=new Scanner(System.in);
int d=c.nextInt();

System.out.println("enter a number2");
Scanner ce=new Scanner(System.in);
int df=ce.nextInt();

int kk=d+df;
System.out.println("total sum is"+kk);

System.out.println("do you want to continue(y/n)?");
Scanner zz=new Scanner(System.in);
boolean kkw=zz.hasNext();
if(kkw) {
a=true;
}
else {
a=false;
System.exit(0);
}
}
}

我不知道我哪里错了?还有其他办法吗?

最佳答案

首先,如果 scanner.hasNext() 为 true,则您的 a 变量为 true,导致 atrue 对于每个输入,包括 "N" 这意味着,您的 while 循环将继续进行,直到没有更多输入。

其次,您可以通过以下方式优化代码:

  1. 我建议去掉 akkw 以使您的代码更干净、更短。
  2. 仅使用一个扫描器并将其定义在循环外部。对于同一输入,您不需要多个 Scanner。此外,在每个循环中初始化 Scanner 都非常消耗资源。
  3. 使用有意义的变量名称。编程不仅应该高效,还应该易于阅读。在这个小代码中,这是一个小问题,但想象一下,如果有一个完整的程序,您必须搜索每个变量的含义,而不是添加功能和错误修复。

这是代码的优化且有效的版本:

Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Enter a number");
int input1 = scanner.nextInt();
scanner.nextLine(); // nextInt() doesn't move to the next line

System.out.println("Enter a second number:");
int input2 = scanner.nextInt();
scanner.nextLine();

System.out.println("Total sum is " + (input1 + input2)); /* Important to
surround the sum with brackets in order to tell the compiler that
input1 + input2 is a calculation and not an appending of
"Total sum is "*/

System.out.println("Do you want to continue? (Y/N)");
if (scanner.hasNext() && scanner.nextLine().equalsIgnoreCase("n"))
break;
}
scanner.close();

关于java - 从 while 循环退出在 java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60709118/

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