[英]Java charAt unexpected type error
我正在做一个分配,它接受两个无限的未分配整数(表示为字符串)并将它们加起来。 我的添加方法使我感到悲伤。 我不断收到此错误,不知道为什么。
这是给我带来麻烦的代码部分:
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方法时,都会收到3次错误
必需:变量
找到:价值
该错误恰恰说明了该错误:您不能将一个值分配给另一个值。 您必须将值写入变量。
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)
返回一个值,并且没有必要为该值分配值。 机器应如何处理价值? 需要将其分配给变量 。
如果我理解正确,那么您想在给定位置重新设置字符。 您可能需要使用StringBuilder
,因为String
确实是不可变的-您无法更改字符。 只需从saka1029的答案中获取代码即可 。
您可以做一件事,如果不想更好地使用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}
Java中的字符串是不可变的。 您不能使用charAt
在String
分配特定的char
。
这样使用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();
首先,您不能添加角色,从技术上讲可以,但是您获得的只是它们的ASCII码的添加,我不认为您正在寻找它。而且当您使用charAt()
一个String时,您只会获得一个字符,因此如果数字超出了应用程序的预期位数。
我将字符串分解成字符数组,提供所需的字符,然后再次将它们组装成字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.