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

Java 如何向字符串中添加另一个?,java,Java,我的代码有什么问题,我想要它,如果你输入的字符串是33*10=它输出正确的答案,但在这种情况下它输出0.0,如果字符串是33+10,它将输出44 while (character != '=') { for (int i = 0; i < calc.length(); i++) { character = calc.charAt(i); try {

我的代码有什么问题,我想要它,如果你输入的字符串是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");
                }
            }
        }
    }
while(字符!='=')
{
对于(int i=0;i
您不能将字符添加到字符串中,请使用StringBuffer:

StringBuffer buffer = new StringBuffer();
buffer.add("3+3=");
buffer.add("6");
System.out.println(buffer.toString());

而不是
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();
这样做会将所有连续数字附加到字符串生成器,然后将其转换为要分析的字符串


这可能可行,但您的代码有很多地方可能会失败。例如,您使用异常作为决策方法,这通常是不受欢迎的。

字符串类型的对象在创建后无法更改。您要么用旧字符串构建一个新字符串,要么使用一个StringBuilder(更好)。如果您需要同步字符串制作,您可以使用StringBuffer而不是StringBuilder。两者本质相同,但后者是线程安全的,而前者不是

final String characterString = Character.toString(character);
characterString = characterString +characterString
我真的不明白你想在这里做什么。是的,您可以使用第二行,但有一个问题:

characterString +characterString
将创建一个新对象,因此CharacterString将被分配一个新对象。您可以通过第一行中的
final
语句来防止这种情况

此外,
characterString+characterString
将创建一个由重复2次的字符串组成的字符串。像

characterString = "123456";
characterString = characterString + characterString;
System.out.print(characterString);
将在控制台中打印
123456123456
。不知道这是否是你的意图


您正在初始化循环中的字符串。因此,每次传递都会创建一个新传递,丢弃旧传递。如果可能,应避免不必要的对象创建和破坏。

接受您的其他一些问题,人们会更愿意帮助u^^@Neal,绝对不是这样。)
characterString = "123456";
characterString = characterString + characterString;
System.out.print(characterString);