我基本上被要求开发一个小游戏,用户从两个不同的列表中选择数字。一旦他们完成了这一操作,就会随机生成一个目标数字,并使用所选的数字(总共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()));
}
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用String.split()
Scanner scanner = new Scanner(System.in);
String userInput = scanner.nextLine();
String[] plusSplit = userInput.split("+");
然后,您将拥有一个添加每个元素的数组。因此,例如“3 + 4 + 5”将为您提供长度为3的String数组,其中第一个元素为3,第二个为4,第三个为5。
您可以按照操作员强度的顺序执行嵌套拆分。
首先在分区上拆分(记得转换为双倍以避免截断)。然后对于除法拆分中的每个元素,在乘法时拆分。然后加法,减法等。然后你可以使用Integer.parseInt()/ Double.parseDouble向后遍历来反向设计你的值,直到你回到第一次操作。
这不是一项简单但有趣的练习,可以让您通过String
课程arrays
,java operators
和使用变量来保存您的中间值,从而为您提供出色的练习。