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

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

0

入力された2つのコマンド引数に文字制限を与える方法

Java超入門者です。C言語経験なしです。
まだ理解度が低く、質問の言語や文脈が的確でなかったらすみません。ご指摘お願いします。

------
入力された2つのコマンド引数に文字制限を与えるプログラムの書き方について。
>>方法論を教えてください。

String s1 = new String(args[0]);
String s2 = new String(args[1]);

条件1) s1 はn1(文字数)以内とする
条件2) s2 はn2 以上、n3以内とする
という条件の場合、
コマンド上で、入力された文字が条件に当てはまらない場合は、なんらかのメッセージを表示させます。
この2つの条件をシンプルに記述する方法はありますか。

どうぞよろしくお願いいたします。

9

回答

79829

閲覧

9件の回答

評価

0

方法論てw

教科書を読んで、勉強したとおりに書けばよろしい。
シンプルかどうか気にするなんて、あとあと。

評価

0

>String s1 = new String(args[0]);
>String s2 = new String(args[1]);

これらは問題文にあったの?

http://www.javaroad.jp/java_character2.htm

評価

0

教科書をよく読みます。ありがとうございます。

課題をそのまま掲載できないのですが、コマンド引数に入力される2つの文字列の文字数制限をそれぞれ設けてみるという意味の問題で、String#lengthメソッドを使うとありました。

String s1 = new String(args[0]);
String s2 = new String(args[1]);
は自分で書いたのですが、new演算子は必要ないというところを、今本を読んで知りました。

方法論というか、どんな組み立てをしたらよいかなと、そこから自分で書いてみようと思ったのですが。まだimport やクラスの定義利用については学んでない状況でしたので、入門レベルでも書ける程度のという意味でシンプルなと表現しました。
Stringのメソッドについて、     
$さんに教えていただいたページを読み進めてみます。ありがとうございます!

評価

0

Stringクラス以前に、見るべきは

http://www.javaroad.jp/java_control2.htm

こっちかもしれない。

評価

0

ありがとうございます!
if else 制御文を勉強しました。
こんなふうになり、クラス名を試験問題名にして実行できました。
2番目の引数の条件がelse if で2つできますが、短縮することはできないでしょうか。

これはできなかったです。
s2.length() <=3 && >=5


---- ここから
String s1 = args[0];
String s2 = args[1];
            
 if(s1.length() >= 11) {  //(1)最初の引数文字制限10文字以内
 System.out.println("最初の引数は10文字以内で入力してください。");
 } else if(s2.length() <=3) { //(2)2番目の引数は2文字以上 4文字以内
 System.out.println("2番目の引数は2文字以上、4文字以内で入力してください。");
 } else if(s2.length() >=5) { //(3)2番目の引数文字制限4文字以内 2文字以上
 System.out.println("2番目の引数は2文字以上、4文字以内で入力してください。");
 } else {
 System.out.println("最初:" + s1 + " 2番目:" + s2);
 }
----ここまで

評価

0

他のページも一通り見れ。。。

http://www.javaroad.jp/java_operator3.htm

評価

0

おしい。
s2.length() <=3 && s2.length() >=5
かな。

↑を踏まえて書き換えるともうちょいシンプルになるっぽ。

評価

0

ありがとうございます!演算子ですね。

通行人Aさんもヒントありがとうございます。
&& は||でしたね。その理論でいくと、
エラー対応を別々にしなければ、
s1.length() >10 と併記もできるのかな。
やってみます!

評価

0

ArrayIndexOutOfBoundException 

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