有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java转换。转换成补语

我不知道为什么我会在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);
}

共 (3) 个答案

  1. # 1 楼答案

    改用StringBuilder

    代码与您现在的代码几乎相同,除了以下更改:

    StringBuilder yy = new StringBuilder(Integer.toBinaryString(y));
    ...
    yy.setChatAt(i, '0');
    
  2. # 2 楼答案

    我想有几件事你还不清楚

    • 我想你指的是字符“0”而不是值0
    • else { yy.charAt(i); }绝对没有效果。你可以省略它们
    • 字符串在Java中是不可变的(即它们不能就地修改)
    • 即使他们是,你的语法是错误的。某种形式的类名。方法_name()是对类的方法的调用。它返回一个可以存储的值,它与变量不同,试图分配给方法调用毫无意义

    要在Java中修改字符串,最好的方法可能是使用StringBuilder。使用字符串创建新的StringBuilder,对其进行必要的更改,然后将其转换回字符串

    这看起来像这样:

    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中,您也必须调用适当的方法并传入要分配给它的值

  3. # 3 楼答案

    不能给字符串的索引位置赋值,字符串在Java中是不可变的。这是行不通的:

    yy.charAt(i)=0;
    

    如果需要修改字符串,请将其转换为char[](使用toCharArray()方法),修改数组,然后使用String(char[])构造函数从该数组构建新字符串

    或者,您可以在返回新字符串之前使用StringBuilder修改字符