代码之家  ›  专栏  ›  技术社区  ›  Cedric Jansen

重新启动算法?

  •  0
  • Cedric Jansen  · 技术社区  · 7 年前

    所以我对用Java编码很陌生(从昨天开始)。我要做的是输入一个整数,如果 int c 它大于1或小于0(如果不是1或0),我希望它重新开始。如果 int c 等于1或0,我希望算法继续。我试着在之后插入一些循环 if(c>1 | | c<0) 但它似乎不起作用,只会将结果发送到我的控制台。有什么简单的方法可以让算法重新开始吗?我已经花了两个多小时试图解决这个问题,但我只是一次又一次地把我弄糊涂了。

    // 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 回复  |  直到 7 年前
        1
  •  2
  •   Syed Abdul Wahab    7 年前

    我想,你想再次征求意见。

    一个简单的方法可以是:

    int c = sc.nextInt();
    
    while (c > 1 || c < 0) {
        c = sc.nextInt();
    }
    //code continues
    
        2
  •  0
  •   NikNik    7 年前

    您可以使用 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();
    
        3
  •  0
  •   Ayo K    7 年前

    你需要使用循环

    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 迫使循环结束/停止。

        4
  •  0
  •   Tom O.    7 年前

    使用 hasNextInt() 和a while 循环以迭代数据:

    while (sc.hasNextInt()) {
        int aInt = sc.nextInt();
        //logic here
    }
    

    文档 hasNextInt() https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextInt()

        5
  •  -1
  •   Dimitri Bosteels    7 年前

    你可以把你的代码放在一个函数中(我希望已经是这样了),然后当你没有预期的结果,想再次调用它时,只需在函数内部调用它即可。
    这叫做递归。 你可以了解更多 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();
    }