我正在做一个带有两个无限制的未分配整数的赋值,表示为字符串,并将它们相加。我的添加方法给了我悲伤。我一直收到这个错误并且不知道为什么。
这是代码中给我带来麻烦的部分:
for(int i = 0; i <= cap; i = i + 1){
number.charAt(i) = number.charAt(i) + secondNumber.charAt(i);
//loop checks to see if the current number at i is > or = to 10
//if it is it subtracts ten from the character at i and adds 1 to the
character at i + 1
if(number.charAt(i) >= 10){
number.charAt(i) = number.charAt(i) - 10;
number.charAt(i + 1) = number.charAt(i + 1) + 1;
}
}
这是错误:
UUI.java:25: error: unexpected type
number.charAt(i) = number.charAt(i) + secondNumber.charAt(i);
^
required: variable
found: value
每当我使用charAt方法
时,我都会收到错误三次答案 0 :(得分:2)
必需:变量
发现:价值
错误正是它所声明的:您无法将值分配给另一个值。您必须为变量写一个值。
int a = 14; // Correct; write value "14" to variable "a"
char b = "somestring".charAt(4); // Correct; write result of method 'charAt()'
// of class String to variable "b"
str.charAt(4) = "a".charAt(0); // Incorrect; you cannot write a value to
// the result of a method.
有些答案表明发生错误是因为String
是不可变的。 是导致错误的原因并非如此。 charAt(int)
返回一个值,将某些内容分配给该值是没有意义的。机器应该怎样处理价值?需要将其分配给变量。
如果我理解正确,您想要在给定位置重新设置char。您可能需要使用StringBuilder
,因为String
确实是不可变的 - 您无法更改字符。只需抓取saka1029's answer中的代码。
答案 1 :(得分:2)
您可以做一件事,如果不想更好地使用StringBuilder,可以将字符串转换为字符数组。使用
yourString.toCharArray()
`,然后您可以在特定索引处分配任何值。我不了解用户在 问题,但这是概念如何消除此类错误。
String number,secondNumber;
char[] c1=number.toCharArray();
char[] c2=secondNumber.toCharArray();
for(int i = 0; i <= cap; i = i + 1){
c1[i] = c1[i] + c2[i];
.....//do rest of code}
答案 2 :(得分:0)
Java中的字符串是不可变的。您无法在charAt
内使用char
来分配特定String
。
答案 3 :(得分:0)
像这样使用StringBuilder。
StringBuilder builder = new StringBuilder(number);
for(int i = 0; i <= cap; i = i + 1){
builder.setCharAt(i, (char)(builder.charAt(i) + secondNumber.charAt(i)));
if(builder.charAt(i) >= 10){
builder.setCharAt(i, (char)(builder.charAt(i) - 10));
builder.setCharAt(i + 1, (char)(builder.charAt(i + 1) + 1));
}
}
number = builder.toString();
答案 4 :(得分:0)
首先你不能添加caracters,tecnically你可以,但你得到的是他们的ASCII代码的添加,我不认为你正在寻找这个。当你charAt()
一个字符串,你只获得一个字符,所以如果你的号码超过了应用程序意外行为的数字。
我会将String分解为一个字符数组,替换所需的字符并再次将它们组合成一个字符串。