让算法重新开始?

时间:2017-11-13 15:35:33

标签: java string algorithm if-statement

所以我对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

5 个答案:

答案 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();
}