如何使用switch语句或循环从一种方法切换到另一种方法?

时间:2015-03-10 22:03:22

标签: java methods switch-statement calculator

到目前为止,我已经能够制作方法并允许用户立即退出。我遇到麻烦的是....

  1. 让用户选择操作(加,减,乘,除)
  2. 有一种选择操作的方法
  3. 然后继续使用getNumber语句和不同的操作
  4. 编辑:感谢dawner帮助getNumber,我欠你的 这是我到目前为止所拥有的

    import java.util.*;
    import java.security.*;
    public class Project6
    {
        public static void main(String[] args)
        {
        boolean Go = true;
        while(Go)
        {
        Scanner input = new Scanner(System.in);
        System.out.println("Choose an operation");
        System.out.println("1 for Addition");
        System.out.println("2 for Subtraction");
        System.out.println("3 for Multiplication");
        System.out.println("4 for Division");
        System.out.println("5 to Quit");
        int response=input.nextInt();
        if(response == 5)
        {
           System.out.print("You have quit the calculator");
           Go = false;
        }
        Operation(response);
        }
    }
    public static void Operation(int response)
    {
        switch(response)
        {
            case 1: add(); break;
            case 2: subtract(); break;
            case 3: multiply(); break;
            case 4: divide(); break;
            default: System.out.println("Invalid Response");
        }
    }
    public static void getNumber()
    {
        try
        {
            SecureRandom num = SecureRandom.getInstance("SHA1PRNG");
            int digit1;
            digit1 = num.nextInt();
            int digit2;
            digit2 = num.nextInt();
        }
        catch(NoSuchAlgorithmException nsae)
        {
            System.out.println("Is SHA1PRNG spelled correctly?");
        }
    }
    public static void add(int digit1, int digit2)
    {
        Scanner input = new Scanner(System.in);
        int sum;
        sum = digit1 + digit2;
        System.out.println("What is " + digit1 + " + " + digit2 + " ?");
        int ans;
        ans = input.nextInt();
        if(ans == sum)
        {
            correctPrompt();
        }
        else
        {
            incorrectPrompt();
        }
    }
    public static void subtract(int digit1, int digit2)
    {
         Scanner input = new Scanner(System.in);
         if(digit2 > digit1)
         {
             int temp = digit1;
             digit1 = digit2;
             digit2 = temp;
         }
         int diff = digit1 - digit2;
         System.out.println("What is " + digit1 + " - " + digit2 + " ?");
         int ans;
         ans = input.nextInt();
         if(ans == diff)
         {
              correctPrompt();
         }
         else
         {
              incorrectPrompt();
         }
    }
    public static void multiply(int digit1, int digit2)
    {
         Scanner input = new Scanner(System.in);
         int product = digit1 * digit2;
         System.out.println("What is " + digit1 + " * " + digit2 + " ?");
         int ans = input.nextInt();
         if(ans == product)
         {
             correctPrompt();
         }
         else
         {
             incorrectPrompt();
         }
    }
    public static void divide(int digit1, int digit2)
    {
        int quotient;
        quotient = digit1 / digit2;
        int remainder = digit1 % digit2;
        if(digit2 > digit1)
        {
            int temp = digit1;
            digit1 = digit2;
            digit2 = temp;
        }
        if(remainder == 0)
        {
            Scanner input = new Scanner(System.in);
            System.out.println("What is " + digit1 + " / " + digit2 + " ?");
            int ans = input.nextInt();
            System.out.println("What is the remainder?");
            int remainAns = input.nextInt();
            if(ans == quotient && remainAns == remainder)
            {
                correctPrompt();
            }
            else
            {
                incorrectPrompt();
            }
        }
        else
        {
            Scanner input = new Scanner(System.in);
            System.out.println("What is " + digit1 + " / " + digit2 + " ?");
            int ans;
            ans = input.nextInt();
            if(ans == quotient)
            {
                correctPrompt();
            }
            else
            {
                incorrectPrompt();
            }
        }
    }
    public static void correctPrompt()
    {
        try
        {
            String response;
            response = "";
            SecureRandom num = SecureRandom.getInstance("SHA1PRNG");
            int randResponse;
            randResponse = num.nextInt(4);
            switch(randResponse)
            {
                case 0: response = "Excellent!"; break;
                case 1: response = "Nice Work!"; break;
                case 2: response = "Right - you rock"; break;
                case 3: response = "Well Done"; break;
            }
            System.out.println(response);
        }
        catch (NoSuchAlgorithmException nsae)
        {
            System.out.println("Is SHA1PRNG spelled correctly?");
        }
    }
    public static void incorrectPrompt()
    {
        try
        {
            String response= "";
            SecureRandom num = SecureRandom.getInstance("SHA1PRNG");
            int randResponse;
            randResponse = num.nextInt(4);
            switch(randResponse)
            {
                case 0: response = "No, please try again"; break;
                case 1: response = "Oopsie! You are SO close!"; break;
                case 2: response = "Don't give up - you can do this"; break;
                case 3: response = "Promime no fumigare - Close, but no cigar"; break;
            }
            System.out.println(response);
        }
        catch (NoSuchAlgorithmException nsae)
        {
            System.out.println("Is SHA1PRNG spelled correctly?");
        }
    }
    }
    

1 个答案:

答案 0 :(得分:0)

我能看到的最大问题是你的Operation()方法在没有参数的情况下调用add(),subtract(),multiply()和divide(),但你已经定义了这些方法,每个方法取两位数。我假设你想让getNumber()在这里工作,但getNumber目前只是定义了2位数,然后没有做任何事情。这是至少得到它编译的一种方法:

public static void Operation(int response)
{
    int digit1 = getNumber();
    int digit2 = getNumber();
    switch(response)
    {
        case 1: add(digit1, digit2); break;
        case 2: subtract(digit1,digit2); break;
        case 3: multiply(digit1,digit2); break;
        case 4: divide(digit1,digit2); break;
        default: System.out.println("Invalid Response");
    }
}
public static int getNumber()
{
    try
    {
        SecureRandom num = SecureRandom.getInstance("SHA1PRNG");
        return num.nextInt();
    }
    catch(NoSuchAlgorithmException nsae)
    {
        System.out.println("Is SHA1PRNG spelled correctly?");
        return 0;
    }
}