【问题标题】:How do I switch from one method to another with switch statement or loop? [closed]如何使用 switch 语句或循环从一种方法切换到另一种方法? [关闭]
【发布时间】:2015-03-10 22:03:22
【问题描述】:

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

  1. 让用户选择一个运算(加、减、乘、除)
  2. 拥有选择操作的方法
  3. 然后继续 getNumber 语句和不同的操作

编辑:感谢黎明者对 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?");
    }
}
}

【问题讨论】:

  • 该代码可以编译吗?在我看来它不应该。
  • 请说明您希望看到的输出内容
  • 请自己做作业。

标签: java methods switch-statement calculator


【解决方案1】:

我能看到的最大问题是您的 Operation() 方法正在调用 add()、subtract()、multiply() 和 divide() 没有参数,但您已将这些方法定义为每个采用 2 位数字。我假设您希望 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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-18
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多