【问题标题】:Loop termination confusion循环终止混乱
【发布时间】:2015-02-10 22:50:02
【问题描述】:

所以我有这段代码可以将一系列整数输入到一个序列中,但我想知道如何通过不输入任何值并按 Enter 来终止 while 循环。我知道如果 x 整数值为 0,我可以设置终止循环之类的条件。

public static void main(String[] args) {
SimpleReader in = new SimpleReader1L();
    SimpleWriter out = new SimpleWriter1L();
    Sequence<Integer> s = new Sequence1L<>();
    Sequence<Integer> temp = s.newInstance();
    System.out.println("Enter ");
    int x = in.nextInteger();
    int i = 0;
    while (in.nextLine()) {
        s.add(i, x);
        x = in.nextInteger();
        i++;
    }
    System.out.println(s);
}

【问题讨论】:

  • 加一个@Lemons12345; (问题的详细程度很高)但下次你问的时候,别忘了标记语言。

标签: java loops input while-loop


【解决方案1】:

如果你想达到你所描述的,你需要改变你阅读输入的方式 - 什么都不输入。

首先有一个while (in.nextLine()) 会从您的输入中多吃一行。所以你一半的输入行丢失了。

我建议阅读String line = in.nextLine() 之类的行。然后是这样的:

if (line.equals("")) break;
int x = Integer.parseInt(line);

抱歉,最近没有做 java 来给你完整的循环。但我认为你应该明白这一点。

【讨论】:

  • @Bathsheba,很高兴这个社区里有像你这样的公平人士。
【解决方案2】:

break 可用于退出循环。所以你可以这样说:

if (x == 0) break; 就在声明 i++; 之前

【讨论】:

  • 如果我将条件设置为 (x!=0) 是一样的吗?
【解决方案3】:

使用 do while 循环如下:

do {
    input = int.nextInteger();
    s.add(i, x);
    i++;
} while (input != 0);

或者在你的情况下使用while循环

while (in.nextLine()) {//assuming it checks if user has input
    s.add(i, x);
    x = in.nextInteger();//assuming this api gives integer value back if user indeed entered one
    if (x == 0) 
        break;
    i++;
}

【讨论】:

    【解决方案4】:

    在没有值的情况下按回车键,

    while (in.nextLine().length() > 0) {
        s.add(i, x);
        x = in.nextInteger();
        i++;
    }
    

    循环终止。

    【讨论】:

      【解决方案5】:

      您也可以稍微修改一下,因为= 操作返回的值与它设置的相同:

        SimpleReader in = new SimpleReader1L();
        Sequence<Integer> s = new Sequence1L<>();
        System.out.println("Enter ");
        int i = 0;
        String line = "";
        while (!(line = ir.readLine()).trim().isEmpty()) {
          x = Integer.parseInt(line);
          s.add(i, x);
          i++;
        }
        System.out.println(s);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        • 2023-01-25
        • 2016-03-11
        • 1970-01-01
        • 2014-05-25
        相关资源
        最近更新 更多