0

まず第一に、私は Java の初心者です。だから私に気楽にしてください:)

このコードを作成しましたが、進行状況バーの特定の部分文字列で文字を変更する方法が見つかりません。私がやりたいことはこれです:

プログレスバーは 62 文字 (| を含む) で構成されています。50 番目の文字を文字 B (大文字) に変更したいのですが、次のようになります: |#########----B--|

いくつかのことを試しましたが、これを機能させるためにコード行をどこに置くべきかわかりません。部分文字列と置換コードを使用してみましたが、これを機能させる方法が見つかりません。これを機能させるには、別の方法でコードを記述する必要があるのでしょうか? 誰かが私を助けてくれることを願っています。

前もって感謝します!

   int ecttotal = ectcourse1+ectcourse2+ectcourse3+ectcourse4+ectcourse5+ectcourse6+ectcourse7;
   int ectmax = 60;
   int ectavg = ectmax - ecttotal;

   //Progressbar
   int MAX_ROWS = 1;

   for (int row = 1; row == MAX_ROWS; row++)
     {
           System.out.print("|");
         for (int hash = 1; hash <= ecttotal; hash++)
           System.out.print ("#");
         for (int hyphen = 1; hyphen <= ectavg; hyphen++)
           System.out.print ("-");
           System.out.print("|");
     }
           System.out.println("");
           System.out.println("");
}
4

3 に答える 3

0

あなたが望むものをもう少し教えていただけますか。コンソールに何らかの文字列を書き込んでください。そして、すでにコンソールに出力しているものを変更する方法ではありません。文字列変数でのみ使用できる部分文字列。

文字列変数の部分文字列メソッドで lettir を変更したい場合は、smth を試してください。このような:

String a="thi is long string try it";
if(a.length()>50){
    a=a.substring(0,49)+"B"+a.substring(51);
}

文字列の文字を変更する他の方法は、次のように文字列ビルダーを使用することです。

StringBuilder a= new StringBuilder("thi is long string try it");
a.setCharAt(50, 'B');

例外を避けるために、最初に文字列の長さを確認する必要があります。

私はあなたを助けたことを願っています:)

于 2013-09-23T21:24:29.063 に答える
0

意図したインデックスの周りに新しい文字列を連結することにより、文字列内の特定のインデックスを置き換えることができます。たとえば、次のコードは文字cを文字に置き換えXます。ここで、2 は置き換える予定のインデックスです。

つまり、このコードは文字列の 3 番目の文字を置き換えます。

String s = "abcde";
s = s.substring(0, 2) + "X" + s.substring(3);
System.out.println(s);
于 2013-09-23T21:22:55.523 に答える
0

Java StringBuilderには、 at position を new にsetCharAt置き換えることができるメソッドがあります。charactercharacter

StringBuilder myName = new StringBuilder(<original string>);
myName.setCharAt(<position>, <character to replace>);

<position>インデックスで始まる0

あなたの場合:

StringBuilder myName = new StringBuilder("big longgggg string");
myName.setCharAt(50, 'B');
于 2013-09-23T21:31:46.953 に答える