如何编写一个查询受控循环,它将继续从用户输入int值,将每个值添加到值sum,然后询问用户是否有另一个值要输入,直到用户说没有更多值值
答案 0 :(得分:3)
double sum = 0;
while (user.hasMoreInput()) {
double += user.mostRecentInput();
}
您将hasMoreInput
和mostRecentInput
实施为您的比较。
答案 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中草拟一个实现。