我想知道如何迭代String,这是一个类似“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;
}
答案 0 :(得分:2)
如果它始终采用XXX + YYY =格式,则应使用类String
中的方法。 replace
要删除'=',split
以获取两个数字并将其解析为整数,然后计算值。
答案 1 :(得分:1)
我建议熟悉使用Oracle提供的Fine Javadoc:String class Javadoc
特别是,您可能会发现charAt()
方法很有用。
答案 2 :(得分:0)
除了String和Integer类中可以帮助您的功能之外,我建议您阅读Polish notation或Reverse Polish notation以及如何使用这些功能计算。您的作业可能不需要它,但理解它们以及它们与您正在做的事情之间的关系仍然是一个好主意。