我刚学了Java,但是由于我的C++经验,我认为我可以只用一行代码编写支持所有四个基本运算符的命令行计算器。但是我遇到了一些问题。
这是我的代码:
import java.util.Scanner;
public class omg {
public static void main(String args[]) {
int fnum,snum,anum = 0;
String strtype; //The original calculation as string
char[] testchar; //Calculation as chararray
char currentchar; //current char in the char array for the loop
int machinecode = 0; //Operator converted to integer manually
String tempnumstr; //first and second numbers temp str to be converted int
int operatorloc = 0; //operator location when found
char[] tempnum = new char[256];
Scanner scan = new Scanner(System.in); // The scanner obviously
System.out.println("Enter The Calculation: ");
strtype = scan.nextLine();
testchar = strtype.toCharArray(); //converting to char array
for (int b = 0; b < testchar.length; b++) //operator locating
{
currentchar = testchar[b];
if (currentchar == '+') {
machinecode = 1;
operatorloc = b;
}
else if (currentchar == '-') {
machinecode = 2;
operatorloc = b;
}
else if (currentchar == '*') {
machinecode = 3;
operatorloc = b;
}
else if (currentchar == '/') {
machinecode = 4;
operatorloc = b;
}
}
for(int t = 0; t < operatorloc; t++) { //transferring the left side to char
tempnum[t] = testchar[t];
}
tempnumstr = tempnum.toString(); //converting char to string
fnum = Integer.parseInt(tempnumstr); //parsing the string to a int
for (int temp = operatorloc; temp < testchar.length; temp++) { //right side
for(int t = 0;t<(testchar.length-operatorloc);t++) {
tempnum[t] = testchar[temp];
}
}
tempnumstr = tempnum.toString(); //converting to char
snum = Integer.parseInt(tempnumstr); //converting to int
switch(machinecode) { //checking the math to be done
case 1:
anum = fnum + snum;
break;
case 2:
anum = fnum - snum;
break;
case 3:
anum = fnum * snum;
break;
case 4:
anum = fnum / snum;
}
System.out.println(anum); //printing the result
}
}
这是我的代码,但运行时会询问我计算,并导致出现此错误。
Exception in thread "main" java.lang.NullPointerException
at omg.main(omg.java:38)
可能有一种更好、更简单的方法来做这件事。我想听到更好的方法和关于我的方法的修正。提前感谢。