java计算器的输入是字符串
我想知道如何迭代一个字符串,这是一个类似“34+35=”的计算 循环遍历每个字符,如果该字符是数字,下一个字符也是数字等,则将其添加到字符串中
import java.io.*;
public class SimpleTest{
static double operand1;
static char operator;
static boolean isnum;
static double result;
static String calc = "45+45=";
static String in = "";
public static void main(String[] argv){
SimpleCalculator calculator = new SimpleCalculator();
while (calculator.c != '=')
{
in = calculator.input(calc,operand1);
calculator.parsevalue(operand1, in);
}
System.out.println(calculator.getResult());
}
}
public String input(String calc, double operand1)
{
String in = "";
//66
//++2
for (int i = 0; i < calc.length(); i++)
{
c = calc.charAt(i);
String characterString = Character.toString(c);
if (Character.isDigit(calc.charAt(i)))
{
while (Character.isDigit(calc.charAt(i+1)))
{
characterString = characterString + Character.toString(calc.charAt(i+1));
i++;
}
in = characterString;
}
parsevalue(operand1,in);
}
return in;
}
public void parsevalue(double operand1, String in)
{
String characterString = in;
try
{
setOperand(Double.parseDouble(characterString));
if (flag == 0)
{
operand1 = (Double.parseDouble(characterString));
result = operand1;
flag = 1;
}
getResult();
}
catch (Exception e)
{
try
{
operator = c;
}
catch (Exception e2)
{
System.out.println("Enter a number");
}
}
}
public void setOperator(char operator){
this.operator = operator;
}
public char getOperator(){
return operator;
}
public void setOperand(double operand){
this.operand = operand;
}
public double getOperand(){
return operand;
}
public double getResult(){
if (getOperator() == '+')
{
result = (result + getOperand());
}
if (getOperator() == '-')
{
result = (result - getOperand());
}
if (getOperator() == '*')
{
result = (result * getOperand());
}
if (getOperator() == '/')
{
if (getOperand() == 0)
{
System.out.println("Cannot divide by zero");
}
result = (result / getOperand());
}
return result;
}
# 1 楼答案
如果它总是采用XXX+YYY=格式,那么应该使用类
String
中的方法replace
去掉“=”,split
得到两个数字并将其解析为整数,然后计算值# 2 楼答案
除了String和Integer类中可以帮助您的函数之外,我建议您阅读Polish notation或Reverse Polish notation以及如何使用它们进行计算。这可能不是你的家庭作业所必需的,但了解它们以及它们与你正在做的事情之间的关系仍然是一个好主意
# 3 楼答案
我建议您熟悉使用Oracle提供的优秀Javadoc:String class Javadoc
特别是,您可能会发现
charAt()
方法很有用