繁体   English   中英

Java 简单英文计算器,output 问题

[英]Java Simple English Calculator, output issue

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

这些数字已经通过 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"); }


    }
}

它很简单,我想你会感到困惑。 考虑以下几点:

  • 您将原始数字保存在num1num2中,因此如果您想以 integer 形式显示原始数字,则只需使用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"); 
}

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

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,您的 output 将是:

九加九等于十八
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"); }


    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM