所以我对Java编码很新(昨天开始)。我想要做的是创建一个整数输入,如果 int c 它高于1或低于0(如果它不是1或0),我希望它开始再次。如果 int c 等于1或0,我希望alogrithm继续。我尝试在 if(c> 1 || c< 0)之后插入某种循环,但它似乎不起作用并且仅使用结果来阻止我的控制台。有没有简单的方法让算法重新开始?我已经尝试解决这个问题超过2个小时,但我一次又一次地困扰我。
// more code up here but it is unimportant
int c = sc.nextInt();
if(c > 1 || c < 0) {
result = result + wrong;
System.out.println(result);
} else if (c == 1) {
result = result + notImplemented;
System.out.println(result);
} else if (c == 0) { //more code follows here but is unimportant
答案 0 :(得分:2)
所以你想再次要求输入,我想。
一种简单的方法可能是:
int c = sc.nextInt();
while (c > 1 || c < 0) {
c = sc.nextInt();
}
//code continues
答案 1 :(得分:0)
使用hasNextInt()
和while
循环迭代数据:
while (sc.hasNextInt()) {
int aInt = sc.nextInt();
//logic here
}
hasNextInt()
方法的文档:
https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextInt()
答案 2 :(得分:0)
你需要使用一个循环,所以你有
while(true){
int c = sc.nextInt();
if(c > 1 || c < 0) {
result = result + wrong;
System.out.println(result);
break;
} else if (c == 1) {
result = result + notImplemented;
System.out.println(result);
} else if (c == 0) { //more code follows here but is unimportant
...
}
既然你说你是新人,我会做一些解释:
只要某个条件为真,While循环就会重复其代码块中的内容(即在{ }
内)。在我的回答的情况下,我做while(true)
意味着它会一直重复,直到某些事情导致它停止。在这种情况下,我使用break
强制循环结束/停止。
答案 3 :(得分:0)
在这种情况下,您可以使用while
并使用break
退出:
while (scanner.hasNext()) {
int c = sc.nextInt();
if(c > 1 || c < 0) {
result = result + wrong;
System.out.println(result);
} else if (c == 1) {
result = result + notImplemented;
System.out.println(result);
break;
} else if (c == 0) {
...
break;
}
}
scanner.close();
答案 4 :(得分:-1)
你可以将你的代码放在一个函数中(我希望已经是这种情况)然后当你没有预期的结果并想再次调用它时,只需通过调用你自己的函数来实现。
它叫做递归。
您可以了解更多here。
例如 :
// more code up here but it is unimportant
public void myFunction(){
int c = sc.nextInt();
if(c > 1 || c < 0) {
result = result + wrong;
System.out.println(result);
} else if (c == 1) {
result = result + notImplemented;
System.out.println(result);
} else if (c == 0) { //more code follows here but is unimportant
}
//You want to call your function again
myFunction();
}