【问题标题】:Why my program in not exiting out of while loop?为什么我的程序没有退出 while 循环?
【发布时间】:2012-11-03 17:54:30
【问题描述】:

代码:

int size=0;
Scanner in = new Scanner(System.in);     
System.out.println("Enter size of the Graph");
size = in.nextInt();
System.out.println(size);
for (int i = 1; i <= size; i++) {
    Scanner in2 =new Scanner(System.in);
    while(in2.hasNextInt()){
        int num = in2.nextInt();
        System.out.print("(" + i + "," + num + ")"+",");
        System.out.println();
    }
    System.out.println("out of the while loop");
}

输入与输出:

Enter size of the Graph
4
4
2 3 4
(1,2),
(1,3),
(1,4),
2 5 6
(1,2),
(1,5),
(1,6),

如您所见,我的程序不存在 while 循环。它仍然打印 i=1 的值。 我做错了什么?

【问题讨论】:

  • 然后你应该输入 EOF - 否则程序将不断等待下一个提要。你用的是windows还是linux?
  • Linux.我该怎么做?
  • 提供任何字符输入。这会让你脱离循环。
  • 试试 Control-D。我认为这会发送 EOF。

标签: java input while-loop java.util.scanner


【解决方案1】:

您的程序一直在等待新的提要,以便终止它 - 您应该指出输入已结束(或提供非 int 输入)。

要指示提要已结束 - 您应该提供 EOF - 在 linux 中为 ctrl+D,在 Windows 中为 ctrl+Z

【讨论】:

  • 出于好奇,我如何在 Eclipse 控制台中进行操作?
  • 同理。将 EOF 提供给控制台的 CLI。
【解决方案2】:
int num = in2.nextInt(); 

之后尝试添加in2.nextLine();

注意:

您不应该多次使用new Scanner(System.in);

Scanner in2 = new Scanner(System.in); // this is useless just use in

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2021-08-20
    相关资源
    最近更新 更多