java简单数学英语计算器
我目前正在修一门基础编程课程。老师拒绝看我的代码,试图猜出我问的问题,然后回答那个(不正确的)问题。基本原理是,它应该取一个等式,比如5*6,然后输出“五乘以六等于30”,答案只是一个数字。我现在掌握的代码如下:
package mainPackage;
import java.util.*;
public class Main
{
public static void main(String[]args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter the equation");
String input = scan.nextLine();
String space = " ";
int firstSpace = 0;
int secondSpace = 0;
int numInt1 = 0;
int numInt2 = 0;
String a = "0";
char b = 'a';
String c = "0";
firstSpace = input.indexOf(space);
String sub = input.substring((firstSpace + 1), input.length());
secondSpace = sub.indexOf(space);
a = input.substring(firstSpace--);
b = input.charAt(firstSpace++);
c = input.substring(secondSpace++);
numInt1 = Integer.parseInt(a);
numInt2 = Integer.parseInt(c);
String num1 = "";
String op = "";
String num2 = "";
switch (numInt1)
{
case 0:
{
num1 = "Zero";
}
case 1:
{
num1 = "One";
}
case 2:
{
num1 = "Two";
}
case 3:
{
num1 = "Three";
}
case 4:
{
num1 = "Four";
}
case 5:
{
num1 = "Five";
}
case 6:
{
num1 = "Six";
}
case 7:
{
num1 = "Seven";
}
case 8:
{
num1 = "Eight";
}
case 9:
{
num1 = "Nine";
}
}
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
她告诉我们,在每个数字和操作数之间,她将放置一个空格。所以不是5/6,而是5/6,我们只需要在0到9之间进行,但仍然需要检测她是否输入了两位数,并打印出无效的数字。这部分我知道怎么做。当我尝试运行这个时,问题就出现了。行中没有显示错误,但当我运行它时,我得到以下信息:
Exception in thread "main" java.lang.NumberFormatException: For input string: " * 6"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at mainPackage.Main.main(Main.java:44)
这就是这一行:
numInt1 = Integer.parseInt(a);
删除它们时,代码会打印出如下内容:
"5
* 6
* 6"
有人知道为什么会这样吗?我觉得这似乎是我错过的一件非常明显的事情
编辑:非常感谢你们的快速回复。她从没教过我们分裂法。再次感谢
# 1 楼答案
这可以通过使用
String.split(String regex)
函数来实现# 2 楼答案
如果您知道输入是一个数字、一个空格、一个运算符、一个空格和一个数字,那么这意味着输入的长度是五个字符。除此之外的任何事情都是错误的。然后还可以检查这五个字符是否与给定的格式匹配
通常,在将用户输入传递给需要特定输入的方法之前,应该始终验证用户输入。用户可以输入任何内容,由您的程序确保输入符合所需格式