Javaの問題集で
「2つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の全整数を小さい方から順に表示するプログラムを作成せよ」
(たとえば整数値Aに10、整数値Bに14を入力したら
10 11 12 13 14
という表示がされるプログラムを作成せよ)
という問題をやっていて、作成したプログラムを実行しようとしたのですが、コンパイルエラーになっていましました。
模範解答を見て模範解答どおりに修正したら、エラーにならずにコンパイルできたのですが、私が書いたコードだとエラーになって模範解答のコードだとエラーにならない理由が理解できませんでした。
私が書いたコードと模範解答のコードを記載するので、どなたかご解説いただけないでしょうか?
私が書いたコード
java
1import java.util.*; 2 3public class Main { 4 public static void main(String[] args){ 5 Scanner stdIn = new Scanner(System.in); 6 7 8 int a = stdIn.nextInt(); 9 System.out.println("整数A : "+a); 10 11 int b = stdIn.nextInt(); 12 System.out.println("整数B : "+b); 13 14 15 int start, end; 16 if(a < b) { 17 start = a; 18 end = b; 19 } else if(a > b){ 20 start = b; 21 end = a; 22 } 23 int i = start; 24 do { 25 System.out.print(i++); 26 System.out.print(" "); 27 28 } while(i < end); 29 System.out.print(i); 30 System.out.println(); 31 } 32}
模範解答
java
1import java.util.*; 2 3public class Main { 4 public static void main(String[] args){ 5 Scanner stdIn = new Scanner(System.in); 6 7 8 int a = stdIn.nextInt(); 9 System.out.println("整数A : "+a); 10 11 int b = stdIn.nextInt(); 12 System.out.println("整数B : "+b); 13 14 15 int start, end; 16 if(a < b) { 17 start = a; 18 end = b; 19 } else{ 20 start = b; 21 end = a; 22 } 23 int i = start; 24 do { 25 System.out.print(i++); 26 System.out.print(" "); 27 28 } while(i < end); 29 System.out.print(i); 30 System.out.println(); 31 } 32}
読み込んだ整数A Bのどちらが大きいかの条件分岐の箇所でelseかelse ifかの違いでコンパイルエラーになってしまいました。
エラーメッセージは以下の通りです。
Main.java:23: error: variable start might not have been initialized int i = start; ^ Main.java:28: error: variable end might not have been initialized } while(i < end); ^ 2 errors
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/05 04:29