合并两个CharSequence变量

3
我可以帮您翻译,以下是翻译结果:

我能像这样组合两个CharSequence变量吗?

if (status == 1) {
    for (int i = 0; i < get.length(); i++) {
        if (get.charAt(i) == ')') {
        } else {
            temp = temp.toString() + get.charAt(i);     
            // temp and get are charSequence VARIABLES
        }
    }
}         

虽然语法看起来没问题,编译器没有报错,但应用程序崩溃了。

此外,在初学阶段,我不想涉及 ListArrayList 的项目。有什么想法我做错了吗?

如果您说我不应该使用 .toString() 方法,那我明白了,但是我应该怎么做才能让它正确呢?


因为使用了toString(),你正在进行字符串拼接。你的应用程序报告了什么错误导致崩溃? - undefined
正在制作计算器,所以在 if 语句中排除了关闭括号。 - undefined
它只是崩溃了... 强制关闭 - undefined
1
使用logcat来查找原因。 - undefined
我认为线程以未捕获的异常退出... 我在这里访问了超出界限吗? - undefined
这种方法非常低效;请使用StringBuilder代替。 - undefined
3个回答

1

首先,您可以考虑对代码进行重构:

if (status == 1) {
    for (int i = 0; i < get.length(); i++) {
        if (!(get.charAt(i) == ')')) {
            temp += get.charAt(i);
        }                
    }
}

你遇到的错误在代码的其他位置。这个无法抛出异常。
另外,对于解析,你应该考虑正则表达式:
String tryThis = temp.replaceAll("\\)", "");

0

好的,没问题,但是您寻找的主要目标是什么呢?

通常对于这种情况我们会使用 String,因为它有各种方法。此外,您也可以使用 StringBuffer,但首先应该确定主要目标是什么。


主要目标是制作一个类似卡西欧(Casio)的计算器。用户将输入代数表达式,我需要得到它的答案...因此该表达式以字符格式给出...目前我正在尝试首先解决括号问题...这就是为什么我需要将这个表达式拆分来解决它... - undefined

-1
你确定 get 不是空的吗?
我试过你的代码,它可以运行。
调试并提供导致你的应用崩溃的值。
你也可以通过以下方式获得相同的结果:
temp = temp.toString() + get.toString().replaceAll("\\)", "");

我确信get不为空...但你的代码行看起来很有趣...让我试试看。 - undefined
临时变量 temp 的情况如何?它可以为 null 吗? - undefined
嗯,实际上我想在遇到右括号时用if语句来解决它。所以我不想将整个"获取charSequence变量"转换为一行代码...我需要逐个遍历所有字符并根据接收的字符作出响应。 - undefined
@Muneeb,你正在调用.toString()方法,它会抛出一个NullPointerException,导致你的应用崩溃。 - undefined
好的,可以这样初始化临时charSequence变量吗?charSequence temp = "";现在它会是null吗?如果仍然是null,那么我该如何初始化它,以便在循环的第一次迭代中不会出现问题?因为你所建议的方式似乎只会在循环的第一次迭代中出现这个问题。 - undefined
@Muneeb 是的,使用 temp = ""; - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接