java解析用户输入字符串
我被要求开发一个小游戏,用户从两个不同的列表中选择数字。一旦他们做到了这一点,就会随机生成一个目标编号,并使用所选编号(总共6个),他们必须仅在达到目标编号时使用这些编号,然后对其进行检查并适当评分
List<Integer> large = Arrays.asList(25, 50, 75, 100);
List<Integer> small = Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
7, 7, 8, 8, 9, 9, 10, 10);
好的,我现在的目标是成功解析一个用户输入字符串,这样我就可以将他们的工作与生成的目标编号进行比较。它们只能使用运算符+-*/
例如,如果他们输入:99+1*3/2-1,我想成功地解析它以达到目标数字
我很不确定该怎么做,虽然我已经尝试了一点,但不能再进一步了
Scanner myAns = new Scanner(System.in);
userInput = myAns.nextLine();
String st = userInput;
int result;
for(int i=0;i<st.length();i++)
{
if(st.charAt(i)=='+')
{
result = Integer.parseInt(st.substring(0, i))+Integer.parseInt(st.substring(i+1, st.length()));
}
任何帮助都将不胜感激
# 1 楼答案
您可以使用
String.split()
然后,您将拥有一个数组,其中添加了每个元素。例如,“3+4+5”将给出一个长度为3的字符串数组,其中第一个元素是3,第二个元素是4,第三个元素是5
可以按照操作符强度的顺序执行嵌套拆分
因此,首先在除法上进行拆分(记住转换为double以避免截断)。然后,对于除法拆分中的每个元素,按乘法拆分。然后进行加法、减法等。然后可以使用整数向后遍历。parseInt()/Double。parseDouble对值进行反向工程,直到返回到第一个操作
这不是一个简单但有趣的练习,它将为您提供有关
String
类、arrays
、java operators
以及使用变量保存中间值的大量实践