• ベストアンサー

StringBufferクラスについて

コマンドライン引数で入力された文字列が  3文字以下なら、その文字列を20個、文字列連結して表示し、  4文字以上なら"たくさん"を表示しなさい ・文字列連結の際はStringBufferクラスを使用しなさい ・for分を使用しなさい *Javaのインデックス・配列はゼロからです という問いがあった場合ソースはどのように記述すればいいのでしょうか? なにぶん初心者なもので・・・。 どなたか親切な方、教えてもらえないでしょうか?

  • Java
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

完全回答はためにならないので部分部分のやり方だけ載せます。 ★if文 →条件Xが真のときは処理Aを  条件Yが真のときは処理Bを  XもYも偽のときは処理Cを if(条件X){     処理A } else if(条件△△){     処理B } else{     処理C } ★StringBufferを使った単純文字列連結 →○○というString型文字列をsbに頭から追加。 StringBuffer sb = new StringBuffer(); sb.insert(0,○○); →sbの内容表示 System.out.println(sb.toString()); これくらい示しておけば、あとはウマく組み合わせればできるでしょう。

その他の回答 (3)

noname#130082
noname#130082
回答No.3

>コマンドライン引数で入力された文字列が コマンドライン引数の文字列を見ます。やり方わかりますか?変数に代入した方が処理しやすいかな? できれば、コマンドラインに文字列がない場合の処理も書けばよりベター。 >3文字以下なら きっとif文で場合分けすることになりますね。文字列の長さを調べる方法は分かりますか? >その文字列を20個、文字列連結して表示し、 20個やるということでfor文はたぶん自然に使うことになるでしょう。 連結するときにStringBufferを使う方法は分かりますか? 結果の表示の方法は分かりますか? >4文字以上なら"たくさん"を表示しなさい こっちの場合はかなり簡単ですね。 問題の丸投げは良くないです。取りあえず、自分で考えてできるところまでやってみてから、それでも分からないところを質問しましょう。

ks4750
質問者

補足

>問題の丸投げは良くないです。取りあえず、自分で考えてできるところまでやってみてから、それでも分からないところを質問しましょう。 ご指摘ごもっともです。すみませんでした public class Sample { public static void main(String[] args) { // 変数の宣言 String s = args[0]; int i = s.length(); if(i < 4) { System.out.println("すくない"); } else { System.out.println("たくさん"); } } } ここまでは出来たというかやってみたのですが、もちろんこれでは文字列が4文字以上の時のみ(たくさん)と表示され、3文字以下のときは(すくない)と表示されるだけです for文を使って繰り返し処理を行うのだろうというのはわかるのですが具体的なサンプルソースなどが自分では見つけられずにいたのです 数値の繰り返しの場合は多くサンプルがあったのですが文字列連結して繰り返しというのは発見できず・・・

  • zozy
  • ベストアンサー率60% (20/33)
回答No.2

まずは、このページをブックマークしましょう↓ http://java.sun.com/javase/ja/6/docs/ja/api/index.html APIといってStringBufferなどJavaに元からそなわった機能の一覧が載っています ついでに、StringBufferはjava.langの下位層にあります >ソースはどのように記述すればいいのでしょうか? この問題は基本ですし、なんのひねりもありませんのでご自分で解決するべきでしょう 最初はわからなくても、諦めずに考えればわかるようになりますので、頑張ってくださいね

ks4750
質問者

お礼

教えていただいたページを参照して自分で考えてみます ありがとうございました

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>という問いがあった場合ソースはどのように記述すればいいのでしょうか? あなたが今読んでいる参考書に参考となるソースが書かれているでしょう。 それに沿って記述して下さい。 >なにぶん初心者なもので・・・。 「初心者」にもイロイロあるわな。 あなたは最悪の部類ですよ。

ks4750
質問者

お礼

ご指摘、耳が痛いです 自分で考えて頑張ってみます ありがとうございました

関連するQ&A

  • for文とStringBuffer

    javaのfor文の使い方 質問者:asutarisuk コマンドライン引数で入力した文字が3文字以下ならその文字列を20個文字連結して表示し、4文字以上ならたくさんと表示したいのですが表示できません。 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() >= 4){ System.out.println("たくさん"); } StringBuffer buf = new StringBuffer(str.length()*20); for(int i = 0;i < 20; i++){ buf.append(str); System.out.println(buf); } } } としたら、たくさんと表示されません。どこを修正すればいいでしょうか?ちなみにfor文とStringBufferクラスを用いてというのが条件です。

    • ベストアンサー
    • Java
  • javaのfor文の使い方

    コマンドライン引数で入力した文字が3文字以下ならその文字列を20個文字連結して表示し、4文字以上ならたくさんと表示したいのですが表示できません。 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() >= 4){ System.out.println("たくさん"); } StringBuffer buf = new StringBuffer(str.length()*20); for(int i = 0;i < 20; i++){ buf.append(str); System.out.println(buf); } } } としたら、たくさんと表示されません。どこを修正すればいいでしょうか?ちなみにfor文とStringBufferクラスを用いてというのが条件です。

  • IntArrayクラスのプログラムを組んでいるのですが・・・

    javaプログラミングで以下の内容を満たす、IntArrayクラスを作成しています。 ・インスタンス変数  int型の配列data ・コンストラクタ  (1)int型の配列を受け取り、そのコピーを内部的に保持する  (2)第1引数で指定された要素数を持つ配列を確保し、全ての要素に初期値として第2引数で指定された値をセットする  (3)第1引数で指定された要素数を持つ配列を確保し、全ての要素に初期値としてゼロをセットする ・メソッド  (1)sort   内部的に保持している配列を、引数の値がtrueであれば昇順、falseであれば降順にソートする  (2)length   IntArrayが保持している配列の要素数を取得する  (3)getElement   引数に指定された要素番号の値を取得する  (4)setElement   第1引数に指定された要素番号に第2引数で指定された値を格納する   (5)getArray   IntArrayが保持している配列のコピーを取得する 実際にプログラムを組んでみたのですが、※の部分が冗長だと指摘を受けました。 しかしどのように修正したらよいかわかりません。 どうかアドバイスなどをよろしくお願いいたします。 package java_Lesson; import java.util.Arrays; /** * int型の配列dataの要素を取得、あるいは操作するクラス */ class IntArray { private int[] data; /** * int型の配列を受け取り、そのコピーを内部的に保持する * * @param args コピー元となる配列 */ IntArray(int[] args) { data = (int[])args.clone(); } /** * 第1引数で指定された要素数を持つ配列を確保し、 * 全ての要素に初期値として第2引数で指定された値をセットする * * @param arg1 配列の要素数 * @param arg2 配列の初期値 */ IntArray(int arg1, int arg2) { this(arg1); /* ※ */ for (int index = 0; arg1 > index; index ++) { data[index] = arg2; } } /** * 第1引数で指定された要素数を持つ配列を確保し、 * 全ての要素に初期値としてゼロをセットする * * @param arg 配列の要素数 */ IntArray(int arg) { data = new int[arg]; } /** * 内部的に保持している配列を昇順、あるいは降順にソートする * * @param arg trueであれば昇順、falseであれば降順にソート */ void sort(boolean arg) { Arrays.sort(data); if (arg) { return; } int array = data.length - 1; for (int index = 0; array > index; index ++, array --) { int temp = data[index]; data[index] = data[array]; data[array] = temp; } } /** * IntArrayが保持している配列の要素数を取得する * * @return 配列の要素数 */ int length() { return data.length; } /** * 引数に指定された要素番号の値を取得する * * @param arg 返す要素の要素番号 * * @return 配列dataの要素番号argの値 */ int getElement(int arg) { return data[arg]; } /** * 第1引数に指定された要素番号に第2引数で指定された値を格納する * * @param arg1 値を格納する要素番号 * @param arg2 配列に格納する値 */ void setElement(int arg1, int arg2) { data[arg1] = arg2; } /** * IntArrayが保持している配列のコピーを取得する * * @return 配列dataのコピー */ int[] getArray() { return data.clone(); } }

    • ベストアンサー
    • Java
  • javaに関して質問があります。

    コマンドライン引数の文字列をすべて大文字に変換したものと、全て小文字に変換したものを表示するプログラムを書きなさい。クラス名はkoin w:\> Java koin Hello HELLO hello w:\> Java koin Java JAVA java

  • 文字数の限界

    つい最近、友人から「コマンドライン引数として受け取れる最大文字列数は、どれくらいかわかる?」と聞かれました。 コマンドライン引数を保存する配列の要素数を決める際に、コマンドライン引数として渡すことができる文字列の限界(または、一般的に想定している文字数)を要素数にしたいとのことだったのですが、どなたか教えていただけないでしょうか? あと、ほかに文字数の上限が設定されているようなもの(例 ファイル名など)があれば教えてください。

  • JavaからJavascriptの配列を出力したい

    JavaからJavascriptの配列を出力したいのですが、 appendした要素を区切り文字で区切って返す方法が わかりません。 <% StringBuffer js = new StringBuffer(); js.append("1"); js.append("2"); %> Javaで↑のように格納した後に、 下記のようにJavascriptの配列を出力したいです。 if(a = 1){ val=new Array("1,"2"); }

  • Cの本を読んでいて・・・

    Cの本(バイブルと呼ばれているもの)を読んでいたのですが、よく理解できなかったので、質問させていただきました。 「コマンド行の引数、Cをサポートする環境においては、コマンド行の引数すなわちパラメータを、実行開始時にプログラムに渡す方法がある。具体的には、実行開始時にmainが呼び出されたときに、二つの引数が渡される。最初の引数は、そのプログラムを呼び出したコマンド行の引数の個数である。二番目は引数を内容とする文字列の配列を指すポインタで、その文字列ひとつが引数ひとつに対応する。」とありました。全体的に分からないのですが、コマンド行とは?mainにプログラムを渡すしくみ?どなたか分かりやすく、教えてください。どうぞよろしくお願いします。

  • antコマンドでAndroidアプリを作成する

    Eclipseを使用してJAVAでAndroidソースを書いています。 Androidプロジェクトを作成後、「ant release」コマンドを使い、コマンドラインからAndroidアプリを生成したいと思っています。 このとき、コマンドに何かしらの引数を与え、その引数の内容をAndroidアプリのJavaソースに反映させたいと思っています。 具体的には、テキストフィールドに表示する文字列を、antでアプリを作成するときのコマンドの引数の内容から取りたいのです。 色々調べましたが、これを実現できる方法が思い当たりません。 大変申し訳ございませんが、諸先輩方のお知恵を拝借したく、投稿させていただきました。 何卒ご指南いただけましたら幸いです。

    • ベストアンサー
    • Java
  • Pythonのクラスについて

    Python初心者です。 問:ファイル(添付)のsample.csvを読み込み、行数、項目数をコンソールに表示し、引数で指定したデータフレームにデータを挿入するクラスを作成。 困っています…。この問いを解ける方、コードの記述をお願いします。よろしくお願いします。

  • 独習Java章末問題模範解答のソースコードがコンパイルできない

    時間のある方お答えください。 -問題- 次のプログラムを作成しなさい。配列を作成し、それを5個のCharacterオブジェクトで初期化します。その後、StringBufferオブジェクトを生成し、その文字列バッファに配列要素を付加します。最後に文字列バッファを表示します。 -模範解答- class CharacterArray { public static void main(String args[]) { // 配列を作成して初期化する Character array[] = new Character[5]; array[0] = new Character('A'); array[1] = new Character('B'); array[2] = new Character('C'); array[3] = new Character('D'); array[4] = new Character('E'); // 文字列バッファを作成する StringBuffer sb = new StringBuffer(); // 配列要素をバッファに付加する sb.append(array[0]); sb.append(array[1]); sb.append(array[2]); sb.append(array[3]); sb.append(array[4]); // 文字列バッファを表示する System.out.println(sb); } } となっているのですがエラーが16個も検出されてコンパイルできないのです。 どなたか上記ソースコードを訂正してコンパイルできるようにしてください。 /* Javaは訳の分からん概念が沢山あって、どうも直感的に理解しにくいですね。 もう眠い */

    • ベストアンサー
    • Java