如何在字符串中添加另一个?

时间:2011-03-25 17:26:57

标签: java

我的代码有什么问题,我想要它,所以如果您输入的字符串是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");
                }
            }
        }
    }

4 个答案:

答案 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。所以每次通过你都会创建一个新的,丢弃旧的。如果可能的话,应该避免不必要的对象创建。