[英]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"); }
}
}
它很简单,我想你会感到困惑。 考虑以下几点:
num1
和num2
中,因此如果您想以 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.