从某一点回忆一个方法

时间:2018-01-25 13:08:58

标签: java

我想在满足条件(else)时从某个点重新运行此方法,我知道我需要为它创建一个新的类/方法,但不知道如何因为我的所有变量都保留在main方法中。

import java.util.*;

public class OddsAndEvens {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("Let's play a game called Odds And Evens");

        System.out.println();

        System.out.println("What is your name? ");

        //user name
        String name = input.nextLine();

        System.out.println("Hi " + name + "Which do you choose? Odds or Evens ?");

        //user preference this is where I want to rerun the method from in else condition
        String pref = input.nextLine();


        if (pref.equals("Odds") || pref.equals("odds")) {

            System.out.println(name + " has picked odds ! Computer will be evens");

        } else if(pref.equals("Evens") || pref.equals("evens")) {
            System.out.println(name + " has picked evens! Computer will be odds");
        } else {
            System.out.println("please enter a valid answer");

        }
    }
}

3 个答案:

答案 0 :(得分:1)

你不需要新课。您可以复制代码并将其放入如下的新方法中:

private static void playOddsAndEvens() {
    //here comes your code that was written in the main method.
}

你的课程看起来像这样:

public class OddsAndEvens {
    public static void main(String[] args) {
        playOddsOrEvens();
    }

    private static void playOddsAndEvens() {
        //here comes your code that was written in the main method.
    }
}

如果要在另一个类中使用此方法,可以将方法playOddsAndEvens()设为public而不是private。

从那时起,您可以根据需要随时随地调用您的方法。

答案 1 :(得分:1)

有很多方法可以做到这一点,一种方法就是按照Valentin所说的那样做,然后创建一个你能记得的方法。 您也可以使用while循环继续询问"赔率"或" evens"直到用户输入两者中的一个。 有点像:

    String pref = "";

    while(!pref.equalsIgnoreCase("odds") && !pref.equalsIgnoreCase("evens")) {
        pref = input.nextLine();
        if (pref.equals("Odds") || pref.equals("odds")) {
            System.out.println(name + " has picked odds ! Computer will be evens");

        } else if (pref.equals("Evens") || pref.equals("evens")) {
            System.out.println(name + " has picked evens! Computer will be odds");
        } else {
            System.out.println("please enter a valid answer");
        }
    }

您可以通过任何方式缩短代码并使其更清晰,但您应该掌握主要想法。

答案 2 :(得分:1)

这里有很好的答案,但另一种方法是将separate所有必要的功能分别用于单独的方法:

1)调用getUserInput()方法

2)使用用户输入

调用checkOption()方法

3a)如果输入等于您的选项,请打印您想要的结果

3b)如果不相等,请再次调用getUserInput()方法

这就是:

public static void main(String[] args) {
    getUserInput();
}

static void getUserInput() {
    System.out.println("enter odds or evens");
    String pref = input.nextLine();
    checkOption(pref);
}

static void checkOption(String option) {
    if (option.equalsIgnoreCase("odds") || option.equalsIgnoreCase("evens")) {
        result(option);
    } else {
        getUserInput();
    }
}

static void result(String s) {
    System.out.println("You chose " + s);
}

Example