Java 简易英文计算器,输出问题

Java Simple English Calculator, output issue

我正在编写一个计算器程序,它接受 0-9 的输入,并以数字形式和普通英语形式输出结果(例如:二加三等于 5)。我已经让它能够以文字形式打印出结果,但我现在被困在如何让它以数字形式打印出原始问题上。输出必须包括数字和文字结果。

数字已经通过switch语句转换成字符串了,但是有没有办法打印出原来的问题呢?如果不是,我是否必须完全重组它?任何帮助将不胜感激我已经坚持了一段时间了。

这是我的代码

import java.util.Scanner;
public class Project {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        char operation;
        int num1, num2;

        //Asks for user to input first number
        System.out.println("Please enter the first number (0-9)");
        num1 = input.nextInt();

        //Asks user for an operation
        System.out.println("Please enter the type of operation that you would like to perform");
        operation = input.next().charAt(0);

        //Asks user to input the second number
        System.out.println("Please enter the second number (0-9)");
        num2 = input.nextInt();


        //Limits the numbers to the range of 0-9 
        if(num1 > 9 || num2 > 9){

            System.out.println("Invalid Digit!!");
        System.exit(0);}

        //An array that converts number into a string
        String num[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        switch(operation){

            case '-': //Subtraction conversion
                System.out.println(num[num1]+" minus "+num[num2] + " is " + (num1-num2));
                break;

            case '+':   //Addition conversion
                System.out.println(num[num1]+" plus "+num[num2] + " is " + (num1+num2));
                break;   

            case '*':   //Multipication conversion
                System.out.println(num[num1]+" multiplied by "+num[num2] + " is " + (num1*num2));
                break;

            case '/': //Division conversion
                System.out.println(num[num1]+" divided by "+num[num2] + " is " + (num1/num2));
                break;

            case '^':   //Exponentiation conversion

                if(num2 == 0){ //checks to see if the second number entered is 0

                System.out.println("Error: Cannot divide by Zero"); //Divide by Zero error message
                break;}

                System.out.println(num[num1]+" to the power of "+num[num2] + " is " + Math.pow(num1,num2));
                break;

            default:
        System.out.println("Error: Invalid Operation Entered"); }


    }
}

看看下面的打印语句是否有帮助

case '-': //Subtraction conversion
            System.out.println(num[num1]+" minus "+num[num2] + " is " + (num1-num2));
            System.out.println(num1+" "+operation + "  "+num2+ "="+(num1 - num2));
            break;

case '+':   //Addition conversion
            System.out.println(num[num1]+" plus "+num[num2] + " is " + (num1+num2));
            System.out.println(num1+" "+operation + "  "+num2+ "="+(num1 + num2));  
            break;

这就是您要找的吗?例如 9 + 9 你的输出将是:

nine plus nine is 18
9 + 9 = 18

import java.util.Scanner;
public class Project {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        char operation;
        int num1, num2;

        //Asks for user to input first number
        System.out.println("Please enter the first number (0-9)");
        num1 = input.nextInt();

        //Asks user for an operation
        System.out.println("Please enter the type of operation that you would like to perform");
        operation = input.next().charAt(0);

        //Asks user to input the second number
        System.out.println("Please enter the second number (0-9)");
        num2 = input.nextInt();


        //Limits the numbers to the range of 0-9 
        if(num1 > 9 || num2 > 9){

            System.out.println("Invalid Digit!!");
        System.exit(0);}

        //An array that converts number into a string
        String num[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        switch(operation){

            case '-': //Subtraction conversion
                System.out.println(num[num1]+" minus "+num[num2] + " is " + (num1-num2));
                System.out.println(num1+" "+operation + "  "+num2+ " = "+(num1 - num2)); 
                break;

            case '+':   //Addition conversion
                System.out.println(num[num1]+" plus "+num[num2] + " is " + (num1+num2));
                System.out.println(num1+" "+operation + "  "+num2+ " = "+(num1 + num2)); 
                break;   

            case '*':   //Multipication conversion
                System.out.println(num[num1]+" multiplied by "+num[num2] + " is " + (num1*num2));
                System.out.println(num1+" "+operation + "  "+num2+ " = "+(num1 * num2)); 
                break;

            case '/': //Division conversion
                System.out.println(num[num1]+" divided by "+num[num2] + " is " + (num1/num2));
                System.out.println(num1+" "+operation + "  "+num2+ " = "+(num1 / num2)); 
                break;

            case '^':   //Exponentiation conversion

                if(num2 == 0){ //checks to see if the second number entered is 0

                System.out.println("Error: Cannot divide by Zero"); //Divide by Zero error message
                break;}

                System.out.println(num[num1]+" to the power of "+num[num2] + " is " + Math.pow(num1,num2));
                System.out.println(num1+" "+operation + "  "+num2+ " = "+(Math.pow(num1,num2))); 
                break;

            default:
        System.out.println("Error: Invalid Operation Entered"); }


    }
}

很简单,我觉得你有点糊涂了。考虑以下几点:

  • 你在num1num2中保存了原始数字,所以如果你想以整数形式显示原始数字,那么只需使用num1而不是num[num1] ]
  • 您在查找指数时正在检查 zero division。您应该将此支票转移到分案。

像这样替换你的switch

switch(operation){

    case '-': //Subtraction conversion
        System.out.println(num[num1]+" minus "+num[num2] + " is " + (num1-num2));
        System.out.println(num1+" - "+num2 + " = " + (num1-num2));
        break;

    case '+':   //Addition conversion
        System.out.println(num[num1]+" plus "+num[num2] + " is " + (num1+num2));
        System.out.println(num1+" + "+num2 + " = " + (num1+num2));
        break;   

    case '*':   //Multipication conversion
        System.out.println(num[num1]+" multiplied by "+num[num2] + " is " + (num1*num2));
        System.out.println(num1+" * "+num2 + " = " + (num1*num2));
        break;

    case '/': //Division conversion
        if(num2 == 0){ //checks to see if the second number entered is 0

            System.out.println("Error: Cannot divide by Zero"); //Divide by Zero error message
            break;
        }
        System.out.println(num[num1]+" divided by "+num[num2] + " is " + (num1/num2));
        System.out.println(num1+" / "+num2 + " = " + (num1/num2));
        break;

    case '^':   //Exponentiation conversion
        System.out.println(num[num1]+" to the power of "+num[num2] + " is " + Math.pow(num1,num2));
        System.out.println(num1+" ^ "+num2 + " = " + Math.pow(num1,num2));
        break;

    default:
        System.out.println("Error: Invalid Operation Entered"); 
}