1

I do not know why I am getting an error at the yy.charAt(i) assignments. It says... Variable Expected... Not value.

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);
}
4

3 に答える 3

2

文字列のインデックス位置に値を割り当てることはできません。Java では文字列は不変です。これは決して機能しません:

yy.charAt(i)=0;

文字列を変更する必要がある場合は、char[](メソッドを使用して) に変換し、配列を変更してから、コンストラクターtoCharArray()を使用してその配列から新しい文字列を作成します。String(char[])

StringBuilderまたは、新しい文字列を返す前にa を使用して文字を変更することもできます。

于 2012-12-28T01:53:00.157 に答える
0

はっきりしないことがいくつかあると思います。

  • 値0ではなく文字「0」を意味していると思います。
  • else { yy.charAt(i); }はまったく効果がありません。単にそれらを省略することができます。
  • 文字列はJavaでは不変です(つまり、その場で変更することはできません)。
  • たとえそうであったとしても、あなたは構文が間違っています。class_name.method_name()の形式は、クラスのメソッドの呼び出しです。保存できる値を返します。これは変数と同じではなく、メソッド呼び出しに割り当てようとしてもまったく意味がありません。

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でも、適切なメソッドを呼び出して、それに割り当てる値を渡す必要があることに注意してください。

于 2012-12-28T02:04:30.130 に答える
0

代わりに StringBuilder を使用してください。

コードは、次の変更を除いて、現在のものとほぼ同じです。

StringBuilder yy = new StringBuilder(Integer.toBinaryString(y));
...
yy.setChatAt(i, '0');
于 2012-12-28T02:03:42.823 に答える