java中的查询控制循环

时间:2009-12-14 15:28:53

标签: java loops

如何编写一个查询受控循环,它将继续从用户输入int值,将每个值添加到值sum,然后询问用户是否有另一个值要输入,直到用户说没有更多值值

5 个答案:

答案 0 :(得分:3)

double sum = 0;
while (user.hasMoreInput()) {
    double += user.mostRecentInput();
}

您将hasMoreInputmostRecentInput实施为您的比较。

答案 1 :(得分:1)

这是我写这样一个循环的方式。我不应该为你写作业,但我仍然希望展示我最喜欢的这种循环风格。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while (true) {
    System.out.print("> prompt ");
    String str = in.readLine();
    if (str == null) break;
    process(str);
}

有些人可能不喜欢

  • while (true) - 它看起来像一个无限循环,因为它是!它与用户在输入输入时的耐心一样无限。
  • 单线if - 有些人更愿意将其作为一个完全包围的3线。但我认为没有任何用处;因此它不会变得更具可读性。
  • 在循环中段
  • break。这就是break的用途!这是你从其他无限循环中逃脱出来的。

如果您习惯于阅读Java代码,那么这是惯用且清晰的。优点:

  • 它按照发生的顺序显示正在发生的步骤;
  • 它将str的范围限制在所需的确切位置;
  • 关于终止条件非常明确;
  • 非常简洁。我总是说,更少的线=更少的错误。

答案 2 :(得分:0)

您需要处理几件事。首先,您需要知道如何从用户接收输入。我发现的Java Developer's Almanac示例(http://www.exampledepot.com/egs/java.io/ReadFromStdIn.html)如下所示:

try {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String str = "";
        while (str != null) {
            System.out.print("> prompt ");
            str = in.readLine();
            process(str);
        }
    } catch (IOException e) {
}

您可以将“>提示”替换为更具描述性的内容。您还希望用户退出比输入空行更好的方式,因此如果完成,可能要求他们输入“q”。然后,将while循环中的比较更改为类似!str.toLowerCase()。equals(“q”)。然后,您需要实现process函数以将字符串转换为整数。 Integer.parseInt(String)将返回正确表示整数的字符串的整数值(即“3”或“49”但不是“7e”),否则将抛出NumberFormatException。因为您不希望您的应用程序因输入错误而导致失败,我认为在非Integer字符串的情况下(即,当您捕获NumberFormatException时),该进程可能只返回0。

最后,您需要在主循环之前初始化sum变量,并且可以在每次迭代期间添加process的结果。然后当循环结束时,您可以使用System.out.println将process的结果打印到屏幕上。

我故意遗漏了大部分代码,因为这听起来像家庭作业,但是如果你能理解这一切就足以将它组合在一起,我认为你已经学会了很好,可以自己完成。

答案 3 :(得分:0)

这就是我通常的做法。尽可能少的代码:)。

String s;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while((s = in.readLine()) != null)
    process(s);

答案 4 :(得分:-1)

Java Developer's Almanac始终是您的基本示例的良好来源。

 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
 String str = "";
 while (str != null) {
     System.out.print("> prompt ");
     str = in.readLine();
     process(str);
 }

编辑:显然有些人认为演示某些技术的基本要素应该进行错误检查。也许我也应该对代码进行评论,并提供了一个规范。下一次,我还将开发一些自定义注释来表达前后条件,或者在Eiffel中草拟一个实现。