我尝试在命令行的args中计算数字(在我的计算器中)。例如:
args[0] = 2*3;
String result = method(args[0]);
System.out.println(result) // should be 6
我不知道如何在两位数字“+”,“ - ”之间使用我的字符。我不能使用循环。我的方法思路是使用 charAt ,如:
char a = arg.charAt(0);
char b = arg.charAt(1);
char c = arg.charAt(2);
但我不知道要改变我的b char(*)来进行计算。
答案 0 :(得分:1)
您没有正确传递值。你的输入是一个字符串,对吗?您的代码显示整数表达式。
args[0] = "2*3"; //note that this changed to a string
double result = parse(args[0]);
System.out.println(result) // should be 6
然后你可以用你的方法解析你的字符串:
double parse(String str){
int num1 = Integer.valueOf(str.substring(0,1));
char operator = str.charAt(1);
int num2 = Integer.valueOf(str.substring(2,3));
switch(operator){
case '+': return num1+num2;
case '-': return num1-num2;
case '*': return num1*num2;
case '/': return num1/num2;
default: throw new IllegalArgumentException();
}
}
使用我的代码运行System.out.println(parse("2*3"));
打印6.0
。
当然这只适用于只有一位数的操作数。但这是来自charAt
想法的限制。
答案 1 :(得分:0)
我通常不会使用JAVA,但是..
如果你运行这样的过程,你将把输入作为一个字符串:
> MyCalculator 2*3
现在,您想将此字符串分为三个部分:
Number1, Operation, Number2
为此,您可以执行以下操作:
String[] parts = args[0].split("\\*");
Double Number1 = Double.parseDouble( parts[0])
Double Number2 = Double.parseDouble( parts[1])
现在,您可能会注意到您将错过运营商.. 所以你想找到它并获取它,或者你可以这样做:
if( args[0].indexOf("*") > -1)
{
System.out.println(Number1 * Number2);
}
编辑: 为了获得更多灵活性,您可能希望以相反的方式实现:
if( args[0].indexOf("*") > -1)
{
String[] parts = args[0].split("\\*");
Double Number1 = Double.parseDouble( parts[0])
Double Number2 = Double.parseDouble( parts[1])
System.out.println(Number1 * Number2);
}
if( args[0].indexOf("/") > -1)
{
String[] parts = args[0].split("/");
Double Number1 = Double.parseDouble( parts[0])
Double Number2 = Double.parseDouble( parts[1])
System.out.println(Number1 / Number2);
}
等...
注意“ - ”会特别烦人
答案 2 :(得分:0)
它不是最好的解决方案,但它有效,你可以输入任意长度的数字。
String[] number = args[0].split("[*]|[/]|[+]|[-]");
int stringLength = args[0].length();
int operatorBeginning = number[0].length();
int operatorEnd = stringLength - number[1].length();
String operator = args[0].substring(operatorBeginning,operatorEnd);
double answer = 0;
switch(operator) {
case "*":
answer = Integer.valueOf(number[0]) * Integer.valueOf(number[1]);
break;
case "/":
answer = Integer.valueOf(number[0]) / Integer.valueOf(number[1]);
break;
case "+":
answer = Integer.valueOf(number[0]) + Integer.valueOf(number[1]);
break;
case "-":
answer = Integer.valueOf(number[0]) - Integer.valueOf(number[1]);
break;
default:
System.out.println("Wrong operator");
break;
}
System.out.println(answer);