我的代码有什么问题,我想要它,所以如果您输入的字符串是33 * 10 =它输出正确答案,但在这种情况下输出0.0,如果字符串是33 + 10则输出44
while (character != '=')
{
for (int i = 0; i < calc.length(); i++)
{
character = calc.charAt(i);
try
{
final String characterString = Character.toString(character);
characterString = characterString +characterString
setOperand(Double.parseDouble(characterString));
if (flag == 0)
{
operand1 = (Double.parseDouble(characterString));
result = operand1;
flag = 1;
}
getResult();
}
}
catch (Exception e)
{
try
{
operator = character;
}
catch (Exception e2)
{
System.out.println("Enter a number");
}
}
}
}
答案 0 :(得分:0)
您无法在String中添加char,请使用StringBuffer:
StringBuffer buffer = new StringBuffer();
buffer.add("3+3=");
buffer.add("6");
System.out.println(buffer.toString());
答案 1 :(得分:0)
String mainString="i am ready to add characters";
char c='v';
String toAdd=Character.toString(c);
mainString = mainString.concat(toAdd);
答案 2 :(得分:0)
而不是character = calc.charAt(i);
只抓取1个字符尝试...
StringBuilder sb = new StringBuilder();
while(calc.charAt(i).isDigit()){
sb.append(calc.charAt(i));
i++;
}
...
final String characterString = sb.toString();
执行此操作会将所有连续数字附加到字符串构建器,然后将其转换为要解析的字符串。
这可能会有效,但您的代码有很多可能会失败的地方。例如,您使用异常作为决策方法,这通常是不受欢迎的。
答案 3 :(得分:0)
String类型的对象在创建后无法更改。你要么从旧的String中构建一个新的String,要么追加你想要追加的String,或者更好的方法 - 使用StringBuilder。如果你需要String forup manupilation的同步,你将使用StringBuffer而不是StringBuilder。两者基本相同,但后者是线程安全的,而第一个则不是。
final String characterString = Character.toString(character);
characterString = characterString +characterString
我真的不知道你想做什么。是的你可以使用第二行,但是有一个问题:
characterString +characterString
将创建一个 new 对象,因此将为charactrerString分配一个新对象。这是您通过第一行中的final
语句阻止的。
此外characterString +characterString
将创建一个由String重复2次组成的String。喜欢
characterString = "123456";
characterString = characterString + characterString;
System.out.print(characterString);
将在控制台中打印123456123456
。并且不知道这是否是你的意图。
您正在循环中初始化String characterString。所以每次通过你都会创建一个新的,丢弃旧的。如果可能的话,应该避免不必要的对象创建。