• ベストアンサー

理解できません

まだ、初めて間もないのですが public class DivisionProcess{ (1)public int dead(int x, int y){ (2)int answer = x/y; (3)return answer; } } public class DivisionTest{ public static void main(String args[]){ (4)int x; (5)int y; (6)int answer; try{ x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); DivisionProcess dp = newDivisionProcess(); answer = dp.dead(x,y); } catch(NumberFormatException ex) { System.out.println("数値ではありません"); (7)return; のプログラムの中で、(1)(2)(3)(4)(5)(6)(7)のそれぞれの関係が理解できません。 みなさん助けてください。 よろしくお願いします。

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

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

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

まず、実行すると public static void main(String args[]) 以下から開始します。 このmainクラスで (4)int x; (5)int y; (6)int answer; という変数を定義します。 次に、実行時の第1引数をxに、第2引数をyに代入します。 次に、x,yを引数にし、DivisionProcessクラスのdeadを呼び出します。 (1)は『deadメソッドの処理はここからですよ』というような宣言だと思ってください。 dead()では、引数として渡されたx,yを使用し、x/yを計算して返却します(2),(3)。 (7)のreturnは別にあってもなくても構いません。 おまじないみたいなもんです。 ためしに、 (1)public int dead(int x, int y){ (2)int answer = x/y; (3)return answer; を (1)public int dead(int a, int b){ (2)int kotae = a/b; (3)return kotae; に変更してみてください。 問題なく動きます。 メソッド内で同じ変数名を使用しているので混乱したのかな?

tabo-s
質問者

お礼

ありがとうございます。 メソッド内で同じ変数名が使われてたので、関連があるのかなと思ってしまったのです。 それで、理解ができなかったのですが、 わかりやすいアドバイス、助かりました。

その他の回答 (2)

回答No.3

No.2です。 すみません、 (7)return; は意味がありますね。 よく見るとcatchブロックにありますので、もし例外が発生したらここで処理を終了させるために(7)の文があります。

  • hirohrin
  • ベストアンサー率43% (13/30)
回答No.1

う~ん、はっきり言いますと、この程度の基本的なプログラムがわからないようだと、グローバル・ローカル変数や定数、関数の概念など、残念ながらまったくの基礎の基礎が理解できていないようですね・・・まずここで聞く前に、初心者向けのプログラミングの本を1冊読むことをお勧めします。おそらくそれをしないと、この先、まともなプログラムはまず書けないと思いますよ。

関連するQ&A

  • 例外の文法について

    失礼します。 JAVAを始めて約一ヶ月が経とうそしているのですが、表題にある例外の文法「try~catch」のところでご教授願いたいことがあります。 なにぶん初心者なのでテキストを見ながらとりあえずそのまま写して実行して動作確認して・・・という手法をとっていたのですが、下記の例題が実行できずに困っています。 どうしても途中の int number = Integer.parseInt(args[0]); の部分で止まってしまい、解決策が見つからず八方塞りです。 ぜひご教授願いますよう宜しくお願いいたします。 <例題> import java.io.*; public class Ren25 { public static void main(String args[]){ try{ int number = Integer.parseInt(args[0]); System.out.println(number); }catch(NumberFormatException e){ System.out.println("数字じゃないとダメです:"); } } }

  • プログラムの平均値の出し方。

    プログラムの平均値の出し方。 public class pazu{ public static void main(String[] args){ int sum =0,saidai; System.out.println("コマンドラインパラメータは"+args.length+"個です"); for(int i=0;i<args.length;i++){ int x=Integer.parseInt(args[i]); if(pazu.is_even(x)) System.out.println(args[i]+"は偶数です"); else System.out.println(args[i]+"は奇数です"); sum+=x; } saidai=pazu.max(args); System.out.println("合計:"+sum); System.out.println("最大:"+saidai); } static boolean is_even(int number){ return number%2==0; } static int max(String[] number){ int max =0; for(int i=0;i<number.length;i++){ if(max<Integer.parseInt(number[i])){ max=Integer.parseInt(number[i]); } } return max; } } このプログラムで数値の奇遇、合計値、最大値までは出せたのですが平均値の出し方がわかりません。 どこに何を入れればいいかを教えてください。お願いします。

  • javaプログラミングの質問です。

    プログラムで数値の奇遇、合計値、最大値までは出せたのですが平均値の出し方がわかりません。 どこに何を入れればいいかを教えてください。お願いします。 public class pazu{ public static void main(String[] args){ int sum =0,saidai; System.out.println("コマンドラインパラメータは"+args.length+"個です"); for(int i=0;i<args.length;i++){ int x=Integer.parseInt(args[i]); if(pazu.is_even(x)) System.out.println(args[i]+"は偶数です"); else System.out.println(args[i]+"は奇数です"); sum+=x; } saidai=pazu.max(args); System.out.println("合計:"+sum); System.out.println("最大:"+saidai); } static boolean is_even(int number){ return number%2==0; } static int max(String[] number){ int max =0; for(int i=0;i<number.length;i++){ if(max<Integer.parseInt(number[i])){ max=Integer.parseInt(number[i]); } } return max; } }

    • ベストアンサー
    • Java
  • 例外処理について

    続けて質問です…すみません; public class OddEven { private static boolean even(int k) { return k/2*2 == k; } public static void main(String[] args){ int l; int m=0; int n=0; try{ for(l=0;l<args.length; l++) { int a = Integer.parseInt(args[k]); if(even(a)) { m++; } else{ n++; } } }catch (NumberFormatException e) { System.out.println("<" + e + ">"); } System.out.println("Even = " + m); System.out.println("Odd = " + n); } } とし、例えば「1 2 3 a 5」の中の偶数奇数の個数を判定すると、奇数が2個、偶数が1個となり、例外処理されたaの後の5が奇数にカウントされないのですが、どのように修正すればよろしいのでしょうか?

    • ベストアンサー
    • Java
  • 書き換え

    以下のソースコード(*を使って二等辺三角形を表示するプログラム)をwhile文のかわりにdo-while文を使って書き換える方法が分かる方ぜひ教えてください。いろいろ試しましたがコンパイルできずに困っています↓ //Triangle2.java class Triangle2{ public static void main(String args[]){ try{ if(args.length !=1){ System.out.println("Please input single positive integer!"); } else if(Integer.parseInt(args[0])>0) { int n = Integer.parseInt(args[0]); int i=0; while(i < n){ int j=0; while (j <= i){ System.out.print("*"); j++; } System.out.println(); i++; } int m=n-1; while(m > 0){ int k=m; while(k > 0){ System.out.print("*"); k --; } System.out.println(); m --; } } else{ System.out.println("Please input single positive integer!"); } }catch(NumberFormatException e){ System.out.println("Please input single positive integer!"); } } }

  • 値の渡し方

    こんにちわ。 Javaの勉強をしています。 キーボードから入力して、読み込むクラスで読み込んだ値を処理クラスに渡して演算させたくプログラムを作っています。 下にあるのがそうなのですが、値の渡し方がよくわかりません。 よろしければ、アドバイスをください。 //値の入力クラス import java.io.*; public class Main{ public static void main(String args[])throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(input.readLine()); int b = Integer.parseInt(input.readLine()); } } ---------------------------------------------------------------- //処理クラス public class Enzan{ public static int Wa(int x, int y){ int wa = x + y; return wa; }      public static int Wa(int x, int y){ int sa = x - y; return sa; } }

    • ベストアンサー
    • Java
  • Javaで九九の計算

    今、Javaの勉強をしてる者です。勉強本の中に九九の問題があり、正しく動作することを確認したのですが、 入力された値が数値以外のものだった場合に、再入力させるプログラムに機能アップしたいと欲が出てきました。 現状のプログラムでは、入力値が整数でない場合、NumberFormatException で判定をして次の回に進んでしまってます。 int result = Integer.parseInt(line); の戻り値を判定して、整数でない場合に再入力させれば良いのかと予想したのですが、どう記載すべきかわかりません。 そもそもこの考え方は間違っているのか、別の方法が良いのかご教示いただけませんでしょうか。 --- import java.io.*; public class KuKu4 { public static final int max_question = 10; public static void main(String[] args){ int goodAns = 0; for(int i=0; i < max_question; i++){ boolean check = showQuestion(i+1); if(check){ goodAns++; } } double rate = (goodAns * 100 / max_question) ; System.out.println(""); System.out.println("正解は" + goodAns +"問"); System.out.println("間違いは" + (max_question - goodAns) +"問"); System.out.println("正答率は" + rate +"%"); } public static boolean showQuestion(int question){ int x = (int)(Math.random() * 9) + 1; int y = (int)(Math.random() * 9) + 1; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("[第" + question + "問]" + x + " * " + y + "== ?"); String line = reader.readLine(); int result = Integer.parseInt(line); if(x * y == result){ System.out.println("正しい"); return true; }else{ System.out.println("正しくない"); return false; } }catch(IOException e){ System.out.println(e); }catch(NumberFormatException e){ System.out.println("入力された値が正しくない"); } return false; } }

  • intではなくStringで・・・

    こんなソースがあります。。 public class Check { public static void main(String[] args) { int i = Integer.parseInt(args[0]); if (i == 123) { System.out.println("あたり!"); } else if (i < 123) { System.out.println("はずれ!"); } else { System.out.println("おおはずれ!"); } } } これを、int型の文字を入力して判定させるのではなく、String型の文字で判定させたいのですが、 int i = Integer.parseInt(args[0]);をどう変えればいけるでしょうか? よろしくお願いします!

    • ベストアンサー
    • Java
  • 素数について

    過去にも素数の求め方は多々ありますが、 それらを利用して下記内容のプログラムを作りたいのですが上手くいきません。 どこが間違っているのでしょうか? 教えてください! よろしくお願いします。 〔内容〕 整数AからBまでの素数を求め、その全ての素数を足していく。 出力を”素数の総和は=○○”にする。 *例えば1から10の素数を求め、  その総和は=17 class Sosusouwa {   public static void main(String[]args)   {     int hint1,hint2,y;     int ans = 0;       hint1=Integer.parseInt(args[0]);       hint2=Integer.parseInt(args[1]);         for(int x = hint1; x <= hint2; x++){          for(int i = 2; i <= x; i++){             if(x % i == 0){                if(x == i){                    ans += x;                }             }           }         } System.out.println("素数の総和は="+ans);   } }

    • ベストアンサー
    • Java
  • [Java]Javaの文法が間違っているのでしょうか・・・?

    6人分の小テストの点数を記録し,平均点,最高点,平均点以下の人の一覧を計算するプログラムを作成したいのです。 入力はコマンドラインから行います。 しかし,TEST配列がうまく初期化がうまく記述できないため,コンパイル時点で”シンボルが見つけられません”というエラーが出てしまいます。 Javaの経験が浅いので、文法そのものが間違っているか心配です。C言語についてはある程度知識がありますから、C言語と対比して教えて頂けたりすると大変たすかります。 宜しくお願い致します。 class Lecture { static Lecture[] TEST; static double avg=0; static int max=0; static int i = 0; static String kamoku; int scorebox; String name; String student_number; Lecture(int size){ TEST = new Lecture[size]; for (int i = 0; i < size; i++) { Exercise a = new Exercise(); Student b = new Student(); TEST[i] = new Lecture(a,b); } } static void add(Exercise score, Student aStudent) { TEST[i].name = aStudent.name; TEST[i].student_number = aStudent.student_number; TEST[i].scorebox = score.score; i++; } static void avg() { int sum=0; for (int i = 0; i < 6; i++) { sum += TEST[i].scorebox; } avg = sum / 6; } static void max() { int max = 0; int temp = 0; for (int i = 0; i < 6; i++) { if (max < TEST[i].scorebox) { temp = i; max = TEST[i].scorebox; } } max = i; } static void show_kamoku(){ System.out.println("科目:"+kamoku); } static void show(){ Lecture.max(); System.out.println("平均点:"+avg); System.out.println("最高得点者:"+TEST[max]); } static void under_avg(){ Lecture.avg(); System.out.println("平均点を下回った者"); for(int i=0 ; i<6 ; i++){ if(avg > TEST[i].scorebox){ System.out.println(TEST[i]); } } } } class Exercise { int score; Exercise(int score) { this.score = score; } Exercise() { } public String toString() { return " 得点:" + score; } } class Student { String name; String student_number; Student(String student_number,String name ) { this.name = name; this.student_number = student_number; } Student() { } public String toString() { return "学籍番号:" + student_number + " 名前:" + name; } } class ExerciseEvaluation { public static void main(String args[]){ Lecture.kamoku=args[0]; Lecture[] lec = new Lecture[6]; Student Y0 = new Student(args[1],args[2]); Exercise X0 = new Exercise(Integer.parseInt(args[3])); lec[0].add(X0, Y0); Student Y1 = new Student(args[4], args[5]); Exercise X1 = new Exercise(Integer.parseInt(args[6])); lec[1].add(X1, Y1); Student Y2 = new Student(args[7], args[8]); Exercise X2 = new Exercise(Integer.parseInt(args[9])); lec[2].add(X2, Y2); Student Y3 = new Student(args[10], args[11]); Exercise X3 = new Exercise(Integer.parseInt(args[12])); lec[3].add(X3, Y3); Student Y4 = new Student(args[13], args[14]); Exercise X4 = new Exercise(Integer.parseInt(args[15])); lec[4].add(X4, Y4); Student Y5 = new Student(args[16], args[17]); Exercise X5 = new Exercise(Integer.parseInt(args[18])); lec[5].add(X5, Y5); Lecture.show_kamoku(); Lecture.show(); Lecture.under_avg(); } }

専門家に質問してみよう