我正在做练习,我必须从键盘输入一个字符串 . 该字符串将是简单的算术,例如“2 4 6 - 8 3 - 7” . 是的,格式必须是这样的 . 中间有单个空格 .
我们的想法是采用这个字符串并最终打印出答案 . 到目前为止,这是我的代码:
public class AddemUp {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.print("Enter something like 8 + 33 + 1345 + 137: ");
String s = kb.nextLine();
Scanner sc = new Scanner(s);
sc.useDelimiter("\\s*\\+\\s*|\\s*\\-\\s*");
int sum = 0;
int theInt;
Scanner sc1 = new Scanner(s);
sc1.useDelimiter("\\s*\\s*");
String plusOrMinus = sc1.next();
int count = 0;
if(s.startsWith("-"))
{
sum -= sc.nextInt();
}
while(sc.hasNextInt())
{
theInt = sc.nextInt();
if(count == 0)
{
sum += theInt;
}
else if(plusOrMinus.equals("+"))
{
sum += theInt;
}
else
{
sum -= theInt;
}
sc1.next();
count++;
}
System.out.println("Sum is: " + sum);
}
}
}
在第25行,“sc1.delimiter”所在的位置,我不知道如何让代码跳过所有整数(以及空格)并仅隔离“”或“ - ” . 一旦实现,我可以简单地将其实现到while循环中 .
7 回答
如果你想消除数字,留下一个操作数数组,除了正或负之外的字符:
fyi,当一个减号在字符类中是第一个或最后一个时它是一个字面减去(否则它是一个范围)
请尝试使用
split()
(JavaDoc)方法 . 这更容易 .应该返回一个带数字的数组 .
您可以使用以下代码
这里正则表达式检查字符串中的数字以及它之前/之后/周围的空格 .
这个拆分返回数组 [, +, +, +]
除非字符串以/ - 开头,否则第一个位置将始终为空,您可以从[1]位置访问数组
在这里,希望这有助于......
您将要看到的代码可以解决所有基本方程式,这意味着它可以求解 only 在等式中包含
.
,+
,-
,*
和/或/
符号的方程式 . 该等式还可以加,减,倍,和/或除小数 . 这 cannot 求解包含x^y
,(x)
,[x]
等的方程式 .这是一个例子:
Input:
Output:
希望这可能会帮助你.... thnx
试试这个:
对于非法入境,你当然应该做更好的检查 . 我刚刚给了你这个主意 .
下面的代码可以只计算运算符“和”的序列 - “我希望它有用