如果用户回答Y / y,我该如何回到尝试循环?我知道下面的代码不会要求用户你想再试一次(是/否)?。我目前只能使用bufferedReader。
import java.io.*;
public class Num10 {
public static void main(String[] args){
String in="";
int start=0, end=0, step=0;
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.print("Input START value = ");
in=input.readLine();
start=Integer.parseInt(in);
System.out.print("Input END value = ");
in=input.readLine();
end=Integer.parseInt(in);
System.out.print("Input STEP value = ");
in=input.readLine();
step=Integer.parseInt(in);
}catch(IOException e){
System.out.println("Error!");
}
if(start>=end){
System.out.println("The starting number should be lesser than the ending number");
System.exit(0);
}else
if(step<=0){
System.out.println("The step number should always be greater than zero.");
System.exit(0);
}
for(start=start;start<=end;start=start+step){
System.out.println(start);
}
System.out.println("\nDo you want to try again (Y/N)?");
}
}
答案 0 :(得分:7)
do ... while
循环适用于此。
boolean again = false;
do
{
// your code here
again = askQuestion();
} while(again);
或者您可以使用常规while
循环:
boolean again = true;
while(again)
{
// your code here
again = askQuestion();
}
对于这两者,askQuestion
是另一种方法,它会向用户询问问题并返回true
或false
。
答案 1 :(得分:1)
使用do{..... }while();
像:
boolean again=true;
do{
try{
//your code
}
//your code
}while(again);
如果用户回答Y / y,我该如何回到try循环?
你不能回到try{.....}
。你必须使用
public static void main(String... args){
//your code
}
而不是public static void main(String[] args){}
然后在您想要的代码位置使用main();
。
答案 2 :(得分:0)
如果用户回答Y / y,我该如何回到try循环?
try
不会创建循环。这就是问题所在。
循环“自动返回”直到某些事情发生结束循环。这就是他们循环的原因。
所以你在try块周围放了一个实际的循环,并在循环结束时询问问题,如果用N / n回答(或者其他什么,你可以自己决定你是怎么回事)想要处理它,如果输入是一些其他垃圾)。 do
- while
循环是合适的,因为它会在结尾而不是开头检查其退出条件(例如while
和for
)。
答案 3 :(得分:0)
Java有很多这样的工具。这些被称为“循环”。 Java中可用的循环是while
,do ... while
,for
和for ... each
。 while循环是最简单的。它看起来像这样:
while (condition) {
// Some code
}
基本上,我把“条件”放在你放置任何布尔值的地方。布尔值只是一个可以是true
或false
的值,没有别的。在Java中,您可以创建boolean
类型的变量,但通常情况下,您不会显式创建布尔值。
相反,您将使用条件语句。例如,x < y
,x == y
和x >= y
都是“条件语句”。这意味着,最后,他们评估为布尔值。所以,在这段代码中:
int x = 1;
int y = 5;
if (x < y) {
// Code
}
它所说的x < y
,实际上是在幕后将其评估为true
。布尔值很重要,并且在Java中的许多地方使用。
无论如何,回到循环的主题,让我们进入下一个循环do ... while
。它看起来像这样:
do {
// Code
} while (condition);
do ... while
与while
的工作方式相同,但总是至少运行一次,即使条件为false
。
for
和for ... each
稍微复杂一些。它们实际上只是捷径。请考虑以下代码:
int i = 0;
while (i < 10) {
System.out.println("I is: " + i);
i++;
}
这里,循环将运行10次,i
将跟踪循环次数。 for
循环可以做同样的事情,但是更简洁:
for (int i = 0; i < 10; i++) {
System.out.println("I is: " + i);
}
该代码将执行与第一个代码相同的操作,但它使用for
循环。如您所见,for
循环有三个部分。在第一个中,您可以声明一个变量,在第二个中,您可以设置一个条件,在第三个中,您可以放置在循环的每次迭代中运行的内容。在迭代数组时经常使用for
循环,但你可能还没有学过,所以不要担心。
for ... each
循环比其他循环更复杂,所以如果你还没理解它,不要担心。基本上,它是获取列表的所有元素或Collections API中的任何内容的快速方法。例如,假设您有一个字符串列表,您可以使用它来获取列表中的所有字符串:
for (String string : aList) {
System.out.println(string);
}
这将遍历列表中的每个字符串并将其打印出来。
无论如何,回到手头的问题。在这里,我们需要选择一个循环来使用,似乎最好的情况是一个简单的while
循环。做这样的事情:
boolean condition = true;
while (condition) {
// Your code
try {
while (true) { //Creates an infinite loop
in = input.readLine();
if (in.equalsIgnoreCase("y")) {
condition = true;
break;
} else if (in.equalsIgnoreCase("n")) {
condition = false;
break;
} else {
System.out.println("Please enter either Y or N.");
}
}
} catch (IOException e) {
System.out.println("ERROR!");
}
}
在这里,我们使用两个while
循环。第一个包装整个代码,检查名为condition
的布尔值。我们已将其初始化为true
,因此循环将始终至少运行一次。其次,我做了另一个while
循环。在这里,我做了while (true)
,这将永远运行。但是,您可以使用break
关键字“中断”循环。我使用它的原因是用户有可能输入“y”或“n”以外的内容。在这种情况下,它应该再次问他们。如果它变为“Y”,则将condition
设置为true
并突破循环(这在技术上是不必要的,因为条件已经设置为true
)。如果它变为“N”,则将其设置为false
并突破循环。由于它现在是false
,循环将退出,程序将结束。