我不知道为什么我在yy.charAt(i)分配时收到错误。它说...变量预期......不值。
static int subtract(int x,int y)
{
String yy=Integer.toBinaryString(y);
System.out.println(yy);
for(int i=0;i<yy.length();i++)
{
if(yy.charAt(i)==1)
{
yy.charAt(i)=0;
}
else
{
yy.charAt(i)
}
}
int t=Integer.parseInt(yy);
return(t);
}
答案 0 :(得分:2)
您不能将值赋给字符串的索引位置,字符串在Java中是不可变的。这将永远不会奏效:
yy.charAt(i)=0;
如果您需要修改字符串,请将其转换为char[]
(使用toCharArray()
方法),修改数组,然后使用{{1}从该数组构建新字符串构造函数。
或者,您可以在返回新字符串之前使用String(char[])
修改字符。
答案 1 :(得分:0)
改为使用StringBuilder。
除了这些变化之外,代码几乎与您现在的代码相同:
StringBuilder yy = new StringBuilder(Integer.toBinaryString(y));
...
yy.setChatAt(i, '0');
答案 2 :(得分:0)
我认为有一些事情你不清楚。
else { yy.charAt(i); }
绝对没有效果。你可以简单地省略它们。要在Java中修改字符串,最好的方法可能是使用StringBuilder。您使用String创建一个新的StringBuilder,对其进行必要的更改,然后将其转换回String。
所以这看起来像这样:
StringBuilder builder = new StringBuilder(yy); // StringBuilder from yy.
// rest of your code here
builder.setCharAt(i, '0');
// more code
yy = StringBuilder.toString(); // convert it back to a String.
请注意,即使在StringBuilder中,您也必须调用适当的方法并传入要分配给它的值。