Java Silver 第2章
解答と理由
- A
do {} while()文では一度do {} 内の処理を実行してからwhile()内の条件式を実行するため
- D
int型で扱える桁数をオーバーしているため
B,C,D,E,G
A
char型で扱える変数は1文字の文字列のため
C.D
B
C
8.E
変数aに最後に入れた変数はcのため 9. A,B
10, E
helloメソッドの引数でstrは指定していないため
11, E
配列は0からのため
12, D
インデックス番号表示のため
13, B
インデックス番号2から4の表示のため
14, B
15, C
要素数表示のため
16, E
17, D
18, C
数字+文字列は文字列になるため
- D
String str = "null";のため
B
B
B
インデックス番号は0から始まるため
解答2回目
- C
boolというデータ型はjavaにはないため
E
C,D,E,F,I
変数の最初や最後、アルファベットの前後にはアンダーバーを入れることができないため 4. C
char型は’一文字’;のためA,Bはない。nullはいれることができない?のでC
- D,E
変数名に.や{}は入れられないため
- E
varは右辺値から自動的にデータ型を決める型推論のためA,C,Dはない。Bのnullは入れられない?ため
7. C
C
A,D
Stringオブジェクト作成はString 変数名 = new Stringの形なのでA
- A
hello(str);はメソッドであり、出力されるのはString str = "hoge,world.";のため
- F
String str = "abcde"; のインデックス番号は4までであり、5というのは存在しないため
- E
indexOFメソッドは、引数で指定された文字がどこの位置にあるか、示すもので存在しないときは-1を返す
- D
aの前をインデックス番号0とし、substring();に範囲を指定するため、この場合はD
- C
replace()により、str = "aaaa"; のなかの"aa"を"b"に変えているため
C
A
substring(1,3).の範囲でbcとなり、startsWith("b")なので、substringの範囲の初めの文字が"b"であるかという問いのため
17, A
String型の文字の連結には.contactを使うため
- C
数字+文字列は文字列になるため
- B
String str = null;でstrにnullを入れ、str += "null";はstr = str + "null";なので
C
D
replace();内でインデックス番号1と3の文字をaに変えているため
- D
正解
C
E
C,D,E,F,I
C
D,E
E
C
A
A,B
A
F
E
D
C
F
A
A
C
B
D
D
A
Java Silver 第1章
解答と理由
A,D,E
C
A,C
C
メインメソッド外で変数の宣言をしているため
- A,B,E
エントリーポイントの多くはmain()メソッドのため
- D,
配列の引数を指定していないため
7, A,D
クラスを実行するにはjavacクラス名.javaのため
8,C
.lengthは要素数の出力のため a/"/a"/a/b/cの6つ
解答2回目
- A,C,D
パッケージはクラスをグループにまとめるものであるため
- B
パッケージの宣言はimportよりも前に記述するため
- A,C
java.langパッケージに属するすべてのクラスに適用されるため
- C
パッケージが異なるためコンパイルエラーになる
- A,B,E
mein()メソッド参照
例 public static void main(String args[]) {}
- B
java クラス名 配列引数のため
- B,C
SE11ではjavacのcを省略して記述するため
- B
a/"/a"/ab/cの5つ
正解
A,C,D
B
A,C
C
A,B,E
B
B,C
B
メソッド2
ポイント
- メソッドを使ってif文2を簡略化かつ、分かりやすいプログラミングができているか
問題
java-musashiurawa.hatenablog.com
解答
import java.util.Scanner; public class method2 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner scan = new Scanner(System.in); int place; //場所をScannerクラスで指定する int time; //時間をScannerクラスで指定する boolean flg; //判定するのに使ってください System.out.println("世界の時刻を表示します。"); System.out.println("香港の時刻を表示したい場合は、\"1\"を入力してください。"); System.out.println("ベルリンの時刻を表示したい場合は、\"2\"を入力してください。"); System.out.println("イスタンブールの時刻を表示したい場合は、\"3\"を入力してください。"); System.out.print("表示したい場所の数字を入力してください:"); //数字を入力する place = scan.nextInt(); while(place < 1 || place >= 4 ) { System.out.println("数字が誤っています。1~3の数字を入力してください:"); place = scan.nextInt(); } System.out.print("日本時間を0~23で入力してください:"); //数字を入力する time = scan.nextInt(); while(time < 0 || time >= 24) { System.out.println("数字が誤っています。0~23の数字を入力してください:"); time = scan.nextInt(); } if(place == 1) { jisa("香港",1,time); } if(place == 2) { jisa("ベルリン",8,time); } if(place == 3) { jisa("イスタンブール",6,time); } } private static void jisa(String kuni2,int jisa_time,int time) { System.out.println("日本と" + kuni2 + "の時差は" + jisa_time + "時間です。"); if((time - jisa_time) > 0) { System.out.println("日本の時刻は" + time + "時です。" + kuni2 + "の時刻は" + (time - jisa_time) + "です。"); }else { System.out.println("日本の時刻は" + time + "時です。" + kuni2 + "の時刻は、前日の" + (24 + (time - jisa_time)) + "時です。"); } } }
for文4
ポイント:
- 文字列の長さの取得ができるか
問題
java-musashiurawa.hatenablog.com
解答
public class forbunn4 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ String str = "あ0い1う2え3お4か5き6く7け8こ9"; for(int i = 0; i < str.length(); i++) { if(i % 2 != 0) { char j = str.charAt(i); System.out.print(j); } } } }
正解
public class forbunn4 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ String str = "あ0い1う2え3お4か5き6く7け8こ9"; for(int i = 0; i < str.length(); i++) { if(i % 2 != 0) { char j = str.charAt(i); System.out.print(j); } } } }
配列3
ポイント:
短く、分かりやすいプログラミングになっているか
適切な構文、変数を使えているか
問題
java-musashiurawa.hatenablog.com
解答
public class hairetu3 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int score[][] = { {67,78,90,56,84}, //Aクラスの点数 {48,89,54,91}, //Bクラスの点数 {77,56,100,58,67,69} //Cクラスの点数 }; int sum; for(int i = 0; i < score.length; i++) { sum = 0; char tennsuu[] = {'A','B','C',}; System.out.println(tennsuu[i] + "クラスのテスト結果:"); for(int j = 0; j < score[i].length; j++) { System.out.println(score[i][j] + "点"); sum += score[i][j]; } System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length) +"点です。"); System.out.println(); } } }
正解
public class hairetu3 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int score[][] = { {67,78,90,56,84}, //Aクラスの点数 {48,89,54,91}, //Bクラスの点数 {77,56,100,58,67,69} //Cクラスの点数 }; int sum; for(int i = 0; i < score.length; i++) { sum = 0; char class_name[] = {'A','B','C',}; System.out.println(class_name[i] + "クラスのテスト結果:"); for(int j = 0; j < score[i].length; j++) { System.out.println(score[i][j] + "点"); sum += score[i][j]; } System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length) +"点です。"); System.out.println(); } } }
配列2
ポイント:
多次元配列を理解しているか
switch文を使用し、プログラムしているか
変数sumを上手く使用しているか
問題
java-musashiurawa.hatenablog.com
解答
public class hairetu2 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int score[][] = { {67,78,90,56,84}, //Aクラスの点数 {48,89,54,91}, //Bクラスの点数 {77,56,100,58,67,69} //Cクラスの点数 }; int sum; for(int i = 0; i < score.length; i++) { sum = 0; if(i == 0) { System.out.println("Aクラスのテスト結果:"); }else if(i == 1) { System.out.println("Bクラスのテスト結果:"); }else if(i == 2) { System.out.println("Cクラスのテスト結果:"); } System.out.println(score[i][0] + "点"); sum +=score[i][0]; System.out.println(score[i][1] + "点"); sum +=score[i][1]; System.out.println(score[i][2] + "点"); sum +=score[i][2]; System.out.println(score[i][3] + "点"); sum +=score[i][3]; switch(i) { case 0: System.out.println(score[i][4] + "点"); sum +=score[i][4]; break; case 2: System.out.println(score[i][4] + "点"); sum +=score[i][4]; System.out.println(score[i][5] + "点"); sum +=score[i][5]; break; } System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length ) + "点です。"); System.out.println(); } } }
正解
public class hairetu2 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int score[][] = { {67,78,90,56,84}, //Aクラスの点数 {48,89,54,91}, //Bクラスの点数 {77,56,100,58,67,69} //Cクラスの点数 }; int sum; for(int i = 0; i < score.length; i++) { sum = 0; switch(i) { case 0: System.out.println("Aクラスのテスト結果:"); break; case 1: System.out.println("Bクラスのテスト結果:"); break; case 2: System.out.println("Cクラスのテスト結果:"); break; } for(int j = 0; j < score[i].length; j++) { System.out.println(score[i][j] + "点"); sum += score[i][j]; } System.out.println(score[i].length + "人の平均点は" + (sum / score[i].length ) + "点です。"); System.out.println(); } } }
if 文 2
ポイント:
if文を理解しているか
boolean型の使い方を理解しているか
Scannerクラスの使い方を理解しているか
自分で考えながらプログラムを組むことができるか
問題
java-musashiurawa.hatenablog.com
解答
import java.util.Scanner; public class ifbunn2 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner scan = new Scanner(System.in); int place; //場所をScannerクラスで指定する int time; //時間をScannerクラスで指定する boolean flg; //判定するのに使ってください System.out.println("世界の時刻を表示します"); System.out.println("香港の時刻を表示したい場合は、\"1\"を入力してください。"); System.out.println("ベルリンの時刻を表示したい場合は\"2\"を入力してください。"); System.out.println("イスタンブールの時刻を表示したい場合は、\"3\"を入力してください"); System.out.print("表示したい場所の数字を入力してください:"); //数字を入力する。 place = scan.nextInt(); while(place < 1 || place >= 4) { System.out.println("数字が誤っています。1~3の数字を入力してください:"); place = scan.nextInt(); } // System.out.println(place); System.out.print("日本時間を0~23で入力してください:"); //数字を入力する。 time = scan.nextInt(); while (0 > time ||time >= 23) { System.out.println("数字が誤っています。0~23の数字を入力してください:"); time = scan.nextInt(); } // System.out.println(time); /* if(place == 1) { System.out.print(""); } else if (place == 2) { System.out.print(""); } else if (place == 3) { System.out.print(""); } */ if(place == 1) { System.out.println("日本と香港の時差は1時間です。"); System.out.print("日本の時刻は" + time + "時です。香港の時刻は"); if (flg = time - 1 < 0) { System.out.print("前日の" + (24+(time - 1)) + "時です。"); }else { System.out.print((time - 1) + "時です。"); } }else if (place == 2) { System.out.println("日本とベルリンの時差は8時間です。"); System.out.print("日本の時刻は" + time + "時です。ベルリンの時刻は"); if (flg = time - 8 < 0) { System.out.print("前日の" + (24+(time - 8)) + "時です。"); }else { System.out.print((time - 8) + "時です。"); } } else if (place == 3) { System.out.println("日本とイスタンブールの時差は6時間です。"); System.out.print("日本の時刻は" + time + "時です。イスタンブールの時刻は"); if (flg = time - 6 < 0) { System.out.print("前日の" + (24+(time - 6)) + "時です。"); }else { System.out.print((time - 6) + "時です。"); } } } }