我对编程很陌生,我有点理解方法的概念,但是,我对这个程序并不太感兴趣,我想用方法来缩短它,使它更容易阅读和理解。
import java.util.Scanner;
public class NewCalculator {
public static void main(String[] args) {
String usrInput = "";
String Num1Input = "";
String Num2Input = "";
int Num1Int = 0;
int Num2Int = 0;
int SumOfTwo = 0;
Scanner scnr = new Scanner(System.in);
Scanner Num1 = new Scanner(System.in);
Scanner Num2 = new Scanner(System.in);
System.out.println("Please Enter (M)ultiplication, (D)ivision, (A)ddition, or (S)ubtraction");
usrInput = scnr.next();
System.out.println(usrInput);
if (usrInput.equals("M")|| usrInput.equals("m")||
usrInput.equals("D")|| usrInput.equals("d")||
usrInput.equals("A")|| usrInput.equals("a")||
usrInput.equals("S")|| usrInput.equals("s")
)
{ //If Bracket
switch (usrInput) {//Switch Bracket
case "M":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int * Num2Int;
System.out.println("The Answser to " + Num1Input + " * " + Num2Input + " Equals " + SumOfTwo);
break;
case "m":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int * Num2Int;
System.out.println("The Answser to " + Num1Input + " * " + Num2Input + " Equals " + SumOfTwo);
break;
case "D":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int / Num2Int;
System.out.println("The Answser to " + Num1Input + " / " + Num2Input + " Equals " + SumOfTwo);
break;
case "d":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int / Num2Int;
System.out.println("The Answser to " + Num1Input + " / " + Num2Input + " Equals " + SumOfTwo);
break;
case "A":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int + Num2Int;
System.out.println("The Answser to " + Num1Input + " + " + Num2Input + " Equals " + SumOfTwo);
break;
case "a":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int + Num2Int;
System.out.println("The Answser to " + Num1Input + " + " + Num2Input + " Equals " + SumOfTwo);
break;
case "S":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int - Num2Int;
System.out.println("The Answser to " + Num1Input + " - " + Num2Input + " Equals " + SumOfTwo);
break;
case "s":
System.out.println("Please enter Number 1");
Num1Input = Num1.next();
System.out.println("Please enter Number 2");
Num2Input = Num2.next();
Num1Int = Integer.parseInt(Num1Input);
Num2Int = Integer.parseInt(Num2Input);
SumOfTwo = Num1Int - Num2Int;
System.out.println("The Answser to " + Num1Input + " - " + Num2Input + " Equals " + SumOfTwo);
break;
default:
System.out.println("We are in the case");
break;
}}else{
System.out.println("You may only enter 'M', 'D', 'A', or 'S'");
}
}//Main Bracket
}//Class Bracket发布于 2018-11-07 05:28:03
实际上,将代码分解为方法是您最不需要解决的问题。
您可以对每个输入重复使用相同的Scanner。
Scanner类有一个nextInt()。使用它可以删除字符串来存储输入。
开关块中的default:大小写处理任何错误输入,检查的条件是多余的。
每个case:块包含相同的代码。您可以先询问号码,然后再进行操作。这样你只写一次。
可以堆叠case:语句来处理不同case:'s的相同代码。
将数字存储在数组中可以通过引用方法传递数字。
PrintStream类(System.out)有一个Format方法,它可以很好地连接不同对象的字符串输出。
我把所有这些都放在一起,展示了几种方法可以做些什么:
public static void main(String[] args) {
Integer[] nums = {0,0,0};
var in = new Scanner(System.in);
getNums( in, System.out,nums);
getResult(in, System.out, nums);
}
public static void getResult(Scanner in, PrintStream out,Integer[] nums){
var goodInput = false;
while (!goodInput) {
goodInput = true;
System.out.println("Please Enter (M)ultiplication, (D)ivision, (A)ddition, or (S)ubtraction");
var usrInput = in.next();
switch (usrInput) {
case "M":
case "m":
nums[2] = nums[0] * nums[1];
printResult(out, nums, '*');
break;
case "D":
case "d":
nums[2] = nums[0] / nums[1];
printResult(out, nums, '/');
break;
case "A":
case "a":
nums[2] = nums[0] + nums[1];
printResult(out, nums, '+');
break;
case "S":
case "s":
nums[2] = nums[0] - nums[1];
printResult(out, nums, '-');
break;
default:
out.println("You may only enter 'M', 'D', 'A', or 'S'");
goodInput = false;
}
}
}
public static void getNums(Scanner in, PrintStream out,Integer[] nums) {
out.println("\nPlease enter the first number:");
nums[0] = in.nextInt();
out.println("\nPlease enter the second number:");
nums[1] = in.nextInt();
}
public static void printResult(PrintStream out, Integer[] nums, char operand) {
out.format("The Answser to %1$d %2$c %3$d = %4$d\n", nums[0], operand, nums[1], nums[2]);
}这只是许多可以做到的方法之一。
https://codereview.stackexchange.com/questions/207117
复制相似问题