我刚刚学过java,但是从我从C++学来的旧经验,我想我可以编写一个命令行计算器,它只需一行支持所有4个基本操作符。但我有一些问题。CommandLine Java计算器
这是我的代码:
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)
有可能是一个更好,更容易的方式做到这一点,我想听到一个更好的方式和我的方式修复。提前
你的C(++)的习惯是可见的。 Java中的类应以大写字母开头。变量中的每个单词也应以大写字母开头(例如:machineCode)。变量通常在使用时声明和初始化。并非所有在方法的开始。 machineCode应该是一个枚举而不是int。 –
只有在你的第二篇文章中有正确代码缩进的格式化代码才能使用! –