【最大10000ポイント】当たる!!質問投稿キャンペーン!

メソッドの中に、作ったメソッドを呼び込みたいんですが

シグネチャを int argCheck(String args[]) に指定して、
引数のチェック処理メソッドというものを作成してるんですが、
よくわからないんです。

内容は
(1) 引数の数が1個でない場合、1を返却
(2) 引数が『aaa』でも『ZZZ』でもない場合、99を返却
(3) 以外は、0を返却

public class Test
{
public static void main(String args[])
{
Test test = new Test();
int result = test.argCheck(args);

test.argCheck(); //メソッドを呼び込み

}
private int argCheck(String args[])
{
if(args[0].length != 1) // 引数の数が1以外の場合
{
return 1; // 1を返す
}
else if (!args[0].equalsIgnoreCase("aaa") && !args[0].equalsIgnoreCase("ZZZ"))
//引数が aaa でも ZZZ でもない場合(大/小文字区別せず)
{
return 99; // 99を返す
}
else // それ以外の場合
{
return 0; // 0を返す
}
}
}

A 回答 (1件)

main関数で


int result = test.argCheck(args);
test.argCheck(); //メソッドを呼び込み
2回呼んだりしていていまいち何がしたいのかわかりませんが、

// argCheck
// 引数無しがある場合
private int argCheck() {
return this.argCheck(new String[]{});
}

private int argCheck(String args[]) {
if(args.length != 1) { // 引数の数が1以外の場合
return 1; // 1を返す
} else if( !args[0].equalsIgnoreCase("aaa") && !args[0].equalsIgnoreCase("ZZZ") ) { //引数が aaa でも ZZZ でもない場合(大/小文字区別せず)
return 99; // 99を返す
}
// それ以外の場合
return 0; // 0を返す
}

// end

ちゃんとテストしたわけじゃないですが、こんな感じでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

QJavaで改行などが出来ないのです。

 Java の事で質問です。 
 

 System.out.println("このようにしても\n");

 改行できません。
 
 このようにしても\n   

 と表示されてしまいます。どうしてでしょう。ちなみにOSはMacOS9.1です。なにか関係があるのでしょうか?

Aベストアンサー

> class amigo{
> public static void main(String args[]) {
> System.out.print("aaaaaaaa");
> System.getProperty("line.separator");
> System.out.print("bbbbbbbb");
> }
> }
> のような使い方でしょうか?

String line_sep = System.getProperty("line.separator");
System.out.println("あいうえお" + line_sep + "かきくけこ");

こうです。

QSQLでSUMなどの関数でデータが無い時に0を返したい。

SQLでSUMなどの関数でデータが無い時に0を返したい。

(例)
SELECT SUM(項目) FROM テーブル WHERE 条件

ここで、条件に一致するデータが1件も無かった時ですが、
何かNULLのような物が1件返ってきているようです。
この条件に一致する物が無かった時に、
0を返したいのですが、可能でしょうか?

よろしくお願いします。

Aベストアンサー

NULLが入りうるカラムはNVLで括った方が安全です。
SELECT SUM(NVL(項目,0)) from テーブル WHERE 条件

SUMの場合は、変わりないですが、AVGだと結果が違ったりします。
件名を見て、SUM以外の関数についても含むようだったので一応。


人気Q&Aランキング