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

このQ&Aのポイント
  • シグネチャを int argCheck(String args[]) に指定して、引数のチェック処理メソッドというものを作成してるんですが、よくわからないんです。
  • 作成したメソッドの内容は、(1) 引数の数が1個でない場合、1を返却 (2) 引数が『aaa』でも『ZZZ』でもない場合、99を返却 (3) 以外は、0を返却です。
  • また、Testクラスのmainメソッド内で、作成したメソッドを呼び込んでいます。
回答を見る
  • ベストアンサー

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

メソッドの中に、作ったメソッドを呼び込みたいんですが シグネチャを 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を返す } } }

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

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

  • ベストアンサー
  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.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 ちゃんとテストしたわけじゃないですが、こんな感じでしょうか?

関連するQ&A

  • 静的変数と静的メソッドの使い方について

    独習JAVAにてJAVAを学習しています。「コマンドライン引数を受け取り、それをスペイン語表記に変換して表示するアプリケーションを作成しなさい。例えば、OneはUno、・・・、FiveはCincoになります。静的メソッドを使って実現しなさい」という問題で躓きました。以下、私が作成したプログラムです。 class Language { static String st[] = new String[5]; //静的初期化ブロックは実行しない。 //コマンドライン引数を受け取るmainメソッドが使えないため //静的メソッド static String translation(){ for(int i = 0; i < st.length; i++) { if(st[i] == "One") return st[i] = "Uno"; if(st[i] == "Two") return st[i] = "Dos"; if(st[i] == "Three") return st[i] = "Tres"; if(st[i] == "Four") return st[i] = "Quatro"; if(st[i] == "Five") return st[i] = "Cinco"; } } //21行目 } class StaticalMethodPractice { public static void main(String args[]) { //mainメソッドが登場したので、静的変数を初期化する for(int i = 0; i < Language.st.length; i++) Language.st[i] = args[i]; //静的メソッドを実行 System.out.println(Language.translation()); } } このプログラムに対して、21行目return文が指定されていませんというエラーメッセージが出てくるのですが、そもそもreturnの使い方もよく分からないので右往左往している状況です。低級な質問かもしれませんが、よかったらアドバイスの方よろしくお願いします。

  • 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しか使い方がよくわからないので、他のよい方法がありましたら教えてください。

    • ベストアンサー
    • Java
  • 計算クラスのメソッドについて

    <問題> Mainクラス mainメソッド 1)実行時に引数を2つ付けて実行する。(数字) 2)計算クラスのオブジェクトを生成。 3)argsの0番目と1番目から値を取得し、int型に変換する。 4)int型に変換した値2つを引数として、計算クラスの足し算メソ   ッドを実行し、戻り値を取得して表示する。 計算クラス 足し算メソッド(引数=int,int) 1)int型の数字を引数として2つ受け取る。 2)二つの引数の値を足し算する。 3)計算した値を戻り値とする。 *********************************************************** 上記の問題についての質問です。 最初mathくらすのメソッドを使うのかと思ったのですが、 足し算を計算するようなメソッドが無かったのでネットで検索 して見つけたcalcAdd()というメソッドを使って記述してみました。 でも「シンボルを見つけられません」のエラーが出てコンパイル 出来ないし、メソッドの使い方も違うような気がするので、 分かる方正しい記述の仕方を教えてください。 package siryou; class Keisan { int cal; int cul; public int tashizan(int a, int u) { cal = a; cul = u; int kekka = (Integer)calcAdd(cal, cul, 0); return kekka; } } class TashiHikiKakeWari { public static void main(String args[]) { Keisan ki = new Keisan(); String str1 = args[0]; String str2 = args[1]; int res1 = Integer.parseInt(str1); int res2 = Integer.parseInt(str2); ki.tashizan(res1, res2); int kekka = ki.tashizan(res1, res2); System.out.println(kekka); } } ************************************************************ calcAdd()メソッドの呼び出し方も間違っている気がするのですが、 そもそもこのメソッドって呼び出せば自動的に計算されるように なっているのですか? それとも足し算を計算する記述は別にしなければならないのでしょうか?

    • ベストアンサー
    • Java
  • テストメソッド

    先ほどはありがとうございました。テストメソッドで一つ質問があります。 もしinNorthernHemisphere(北半球)ならTrue。!inNorthernHemisphere(南半球)ならFalse。その月の四季を返します。 {12月、1月、2月} 北半球→"Winter" 南半球→"Summer" {3月、4月、5月} 北→"Spring" 南→"Fall" {6月、7月、8月} 北→"Summer" 南→"Winter" {9月、10月、11月} 北→"Fall" 南→"Spring" プログラムはこのように組んでみました。 public class ControlFun { public String season(int month, boolean inNorthernHemisphere){ if (month == 12 || month ==1 || month == 2) { if (inNorthernHemisphere) { return "Winter"; } else { return "Summer"; } } else if(month == 3 || month == 4 || month == 5 ){ if (inNorthernHemisphere) { return "Spring"; } else { return "Fall"; } }else if(month == 6 || month == 7 || month == 8){ if (inNorthernHemisphere) { return "Summer"; } else { return "Winter"; } }else{ if (inNorthernHemisphere) { return "Fall"; } else { return "Spring"; } } } 問題のテストメソッドですが、 public class ControlFunTest { @Test public void testseason(){ ControlFun myFuns = new ControlFun(); assertEquals("Winter", myFuns.season(12,?)); } } boolean型のinNorthernHemisphereはどのように書けばテストできますでしょうか。? このテストでは、monthは12月。 inNorthernHemisphereはTrue。結果Winterを返したいのです。宜しくお願いします。

    • ベストアンサー
    • Java
  • メソッドが値を返すとき

    ”メソッドが値を返さない”というエラーで困っています。 次のようなプログラムでは、メソッドが値を返せないのは当たり前なのでしょうか?? public int A(){ int a= 3; int b= 5; if(条件式){ return (Math.sin(a*x)); }else if(条件式){ return (Math.cos(b*x)); }else if(条件式){ return 式 ; } } 「return」をif文のなかに入れてしまうことが,いけないのでしょうか? また,それがしてはいけない事ならば,条件式によって扱うreturn文を変えるには, どうしたら良いかアドバイスを下さい。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaプログラムについて

    mainメソッド内の指定された部分の処理を、 別のメソッドに分けてください。 mainメソッド内から作成した別メソッドを呼び出して 実行できるようにしてください。 ※分ける前と分けた後で処理結果が変わらないこと (入力された文字が"A"の場合true, それ以外の場合falseを返すように) */ class MethodAdd1{ public static void main(String[] args){ /* // ★ここから if("A".equals(args[0])){ judge = true; }else{ judge = false; } // ★ここまで */ boolean judge; if("A".equals(args[0])){ System.out.println("true"); }else{ System.out.println("false"); } } /* **戻り値:boolean **引数:String */ //ここにメソッドを作成 public static boolean equals(String a){ String str="A"; if("A".equals(str)){ return true; }else{ return false; } } } これで一応trueかfalseと表示されるのですが、合っているのか分かりません。 お時間のある方で、手直しをして頂ける方お願い致します。

  • 【Java】親クラスでMainメソッドの出力

    Javaについてです。 コマンドライン引数を複数渡し、数値の判定をtry/catchで行う。 catchメソッドには「stringFlg = true;」のみ。 渡ってきた値が数字のみの場合は、数値*数値の文字数を出力し、 数字のみでない場合は文字列を逆から1文字ずつ出力する。 上記のプログラムを下記のように変更したいです。 Testクラスで別パッケージのTest2クラスを継承し、Test2のLogメソッドを呼び出す。 引数で渡ってきた値をMainメソッドでコンソールに出力していたところを Logメソッドでコンソールに出力する。 Mainメソッドを呼びだそうとするとコンパイルエラーが起きる上に、 Mainメソッド内でLogメソッドをどこで呼び出せばいいのかイマイチ分かりません。 教えて下さい。 現時点のソースコードです。 package Test; import Test2.Test2; public class Test extends Test2 { public static void main(String[] args) { Test2 Log = new Test2(); boolean stringFlg = false; for (String arg : args) { try { int num = Integer.parseInt(arg); int nums = num * arg.length(); Log.Log(); stringFlg = false; } catch (NumberFormatException e) { stringFlg = true; }if(stringFlg){ char[] chars = arg.toCharArray(); for (int i = chars.length - 1; i >= 0; i--){ char str = chars[i]; Log.Log(); } } } } } package Test2; import Test.Test; public class Test2 { public void Log() { Test2 test2 = new Test(); System.out.println(test.main(args[0])); //コンパイルエラー } }

  • 教えて下さい!

    以下のプログラムがわかりません。 最近学び始めたのですが、うまく理解できない所があります public static void main(string[]args) int i=99 system.out.printIn(f(i)); static int f(int i) if(i<=0) return 0; else if(i%2==0) return 1+f(i -1) else return f(i-1); 少し省いてますが、このプログラムを実行した時の出力される整数、 メソッドfは何を計算しているのか? いろいろと調べてみてもわからないので、どなたかご教授お願いします!

  • 教えてください。

    class test { public static void main(String args[]) { int A,B,C,D; String N,n; A = Integer.parseInt(args[0]); if(!(args.length == 0)) { if(args[0].length() <= 2 || args[0].length() >= 10) { System.out.println("入力された文字列のバイト数は" + args[0].getBytes().length + "です"); } else if(args[0].length() >= 5 || args[0].length() <= 7 ) { D = args[0].getBytes().length; D = D - 1; System.out.print("入力された文字列の長さは" + ( D ) + "です"); } else if(args[0].indexOf("N") >= 0 || args[0].indexOf("n") >= 0) { System.out.println("引数には'N' または 'n' が含まれていません"); } else if(args[0].indexOf("N") >= 0 || args[0].indexOf("n") >= 0) { System.out.println("引数には'N' または 'n' が含まれています"); } } } } プログラムの仕様は、 プログラムに引数を1つ指定して実行した時、 入力された文字列の長さが、 2 以下、又は 10 以上である場合、 入力された文字列のバイト数を表示 5 以上、かつ、7以下である場合、 入力された文字列の[長さ-1]の値を表示 その他の場合、 入力された文字列の中に、 半角英数字の 'N' または 'n' が含まれている場合は、 引数には'N' または 'n' が含まれています それ以外の場合は 引数には'N' または 'n' は含まれていませんと表示 このようにさせたいんです。 実行例は、 ・D:\Work>java test z 入力された文字列のバイト数は 1 です ・D:\Work>java test dertftd 入力された文字列の長さは 6 です ・D:\Work>java test asd 引数には'N' または 'n' は含まれていません ・D:\Work>java JavaSample7 nfc 引数には'N' または 'n' が含まれています と、実行させたいんですが、Nやnを入力して実行するとエラーが出てしまうんです・・・ 長くなって申し訳ないんですが、どなたかご教授いただけないでしょうか?

    • ベストアンサー
    • Java
  • Javaのプログラムについて教えて下さい

    //Sample.java class Sample void methodA(int temp) if(temp == 0) String str = new String("Exception"); Integer.parseInt(str); else if(temp == 1) int[] array = new int[temp]; else Exception exc = new Exception(); throw exc; //SampleMain.java class ExceptionMain public static void main(string[] args) Sample sam = new Sample(); Int temp = Integer.parseInt(args[0]); Sam.method(temp); } } このプログラムの場合、ExceptionMainに新たにコードを加えて、コマンドライン引数が0,1,その他の場合に例外メッセージを出力するプログラムを教えて下さい。

    • ベストアンサー
    • Java

専門家に質問してみよう