• ベストアンサー

Javaの引数を使ってチェックしていくプログラムですが

public class AAA{ public static void main(String args[]){ System.out.println("チェック開始"); int ContainerA,ContainerB,ContainerC; String PP = "Sweets"; if (args[0].length() != 1 ){        // 引数の数が1以外の場合 { ContainerA = 1;       // 1をエラーコードに設定 } else if(!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu"))        //引数が CAKE でも MANJYU でもない場合(大/小文字区別せず) { ContainerC = 99;      // 99をエラーコードに設定 } else      // それ以外の場合 { ContainerB = 0;     // 0をエラーコードに設定 } } else if(ContainerB == 0){       // もしエラーコードが0の場合 { System.out.println(PP + "?"); //("商品名+?")を表示 } if(ContainerA == 1)      // エラーコードが1の場合 { System.out.println("プログラム終了"); } else if(ContainerC == 99){       // エラーコードが99の場合 System.out.println("プログラム終了"); } } else{        //それ以外の場合(正常終了処理) System.out.println("正常終了"); } } } 上記のソースはコンパイルできないのですが、どこがおかしいのでしょうか? また、条件分岐が ifやelseしか使い方がよくわからないので、他のよい方法がありましたら教えてください。

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ 全角スペースは、プログラムの中で半角スペースとして使ってはいけません。 ・ 変数は、初期化するか必ず値が設定されるように、プログラムを組む必要があります。 public class AAA { public static void main(String args[]) { System.out.println("チェック開始"); int ContainerA = -1, ContainerB = -1, ContainerC = -1; String PP = "Sweets"; if (args[0].length() != 1) { // 引数の数が1以外の場合 ContainerA = 1; // 1をエラーコードに設定 } else if (!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu")) // 引数が CAKE でも MANJYU // でもない場合(大/小文字区別せず) { ContainerC = 99; // 99をエラーコードに設定 } else // それ以外の場合 { ContainerB = 0; // 0をエラーコードに設定 } if (ContainerB == 0) { // もしエラーコードが0の場合 { System.out.println(PP + "?"); // ("商品名+?")を表示 } if (ContainerA == 1) // エラーコードが1の場合 { System.out.println("プログラム終了"); } else if (ContainerC == 99) { // エラーコードが99の場合 System.out.println("プログラム終了"); } } else { // それ以外の場合(正常終了処理) System.out.println("正常終了"); } } }

hikaru333
質問者

補足

ありがとうございます。 コンパイルはできるようになりましたが、 実行の時、引数に何をいれてもエラーにならず、正常終了になってしまいます。 どうすればよいのでしょう?

その他の回答 (2)

  • auty
  • ベストアンサー率58% (284/486)
回答No.3

以下のコードを参考にしてみてください。 ------------------------------------------------------------ public class AAA { public static void main(String args[]) { System.out.println("チェック開始"); int errorCode = -1; String PP = "Sweets"; if (args.length != 1) { // 引数の数が1以外の場合 errorCode = 1; // 1をエラーコードに設定 } else if (!args[0].equalsIgnoreCase("cake") && !args[0].equalsIgnoreCase("manjyu")) { errorCode = 99; // 99をエラーコードに設定 } else { errorCode = 0; // 0をエラーコードに設定 } if (errorCode == 0) { System.out.println(PP + "?"); // ("商品名+?")を表示 System.out.println("プログラム終了"); } else { // それ以外の場合(正常終了処理) System.out.println("正常終了"); } } }

hikaru333
質問者

お礼

ありがとうございます。 できました~。

回答No.2

引数の数は「args.length」で求まります。 「args[0].length」だと「最初の引数となる文字列の長さ」になってしまいます。 実際に引数に何も渡さず実行してみてください。 引数が0個だとエラーとかではなく、例外が発生するはずです。

hikaru333
質問者

補足

できました。ありがとうございます。 追記したい質問があるのですが このエラーコードを入れる変数を1つにして、 同様の動作をさせたいのですが、 どのように組み替えればよいか、よくわからないので どなたかご教授いただけないでしょうか?

関連するQ&A