Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

for文とStringBufferクラス使用

すいません。質問です。

【入力した文字が10文字以下ならその文字列を20個連結して表示、11文字以下なら”多い”と表示、文字連結にはStringBufferを使用し、for文をしようする】というのがありまして、
?”文字連結にStringBufferを利用とはどういう事でしょうか?演算子を用いるのでしょうか?それともconcatでしょうか?それともまったく違うのでしょうか?
?for文で”○○なら△、□□なら×”のようにできるのでしょうか?

以上、宜しくお願い致します。

8

回答

3325

閲覧

8件の回答

評価

0

すいません。
”11文字以下なら”多い”と表示”ではなくて
”11文字以上なら”多い”と表示”」でした。

宜しくお願い致します。

評価

0

一度にやろうとしなければいいのです。

入力した文字数の長さをカウント
10文字未満かどうかの判定
forによるループ
StringBufferを使用した文字列連結

もう一度書きます。
一度にやろうとしなければいいのです。

あなたの質問は、ここと類似する点が多いので、参照してみるとよいでしょう。
http://www.javaroad.jp/bbs/answer.jsp?q_id=20070807112356419

評価

0

StringBufferは次のように使用します。

StringBuffer sb = new StringBuffer(size);
sb.append("Hello, ").append("World!");
String str = sb.toString();

詳しくはJavadoc読んでください。

for文を使え、というのは、20個連結する際に使え、ということで、if文を使うな、とかそういうことではないと思います。

評価

0

if (str.length() >= 11) {
    return "多い";
}
StringBuffer buf = new StringBuffer(str.length() * 20);
for (int i = 0; i < 20; i++) {
    buf.append(str);
}
return buf.toString();

評価

0

皆様お返事ありがとうございます。上記を参考にしながら書いてみたのですが、コンパイルすると”戻り値の型がvoidのメソッドからは値を返せません”と表示されます。

import java.io.*;

public class ABC {
    public static void main(String args[])throws IOException {
        BufferedReader myReader = new BufferedReader(
            new InputStreamReader(System.in), 1);
     
     String str = myReader.readLine();

     if (str.length() >= 11) {
         return "多い";
     }
     StringBuffer buf = new StringBuffer(str.length() * 20);
     for (int i = 0; i < 20; i++) {
         buf.append(str);
     }
     return buf.toString();
    }


としてみたのですが、どこを修正すればいいのでしょうか?

評価

0

まずはコンパイルエラーが何を言っているか、考えてみてください。

評価

0

表示させるために用いるのはreturnではありません。

一部分さんのコードを見て書かれたのだとは思いますが、おそらく一部分さんは計算部分を別メソッドとして書かれたのでしょう。

そのためやもりさんが「文字列を表示してくれるだろう」と思った物を正しい物にしてあげましょう。

詳しくはこのHPの基本事項(3.Hello World)などをご覧ください。
http://www.javaroad.jp/java_basic1.htm

評価

0

ありがとうございます。試してみます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。