テスト1回目(java) - agodmaster/mdLesson GitHub Wiki

java

分かりづらいとこだけをピックアップ

問1.以下のソースコードを実行後、コンソール画面に何が表示されるか答えなさい

  • 1.System.out.println("答えは"+1+3*2+4+"です");
#答え 164

解説 掛け算が優先されて6になるがそれ以外は左から順番に計算されるので文字列と1を足すことになり連結が始まる

  • 2.System.out.println("答えは"+10%4+です");
#答え 2

解説 %(演算子)は余りを求める10の中に4は2個作れるので8そして10-8=2これが余りになる

  • 3.System.out.println("答えは"+5/2.0+"です”);
#答え 2.5

解説 2.0*2.5が5になるからです。

問2.以下の条件がtrueとなる条件式を記述しなさい。

  • 1.int型変数iが5の時
#答え i==5

解説 iの値が5のなった時trueになる ==はその数値と全く同じ数値の場合はみたいな感じである

  • 2.String型変数strが"こんにちは"という文字列と等しい時
#答え str.equels("こんにちは"))

解説 文字列を比較する場合str.equelsで指定した文字の場合はと言う書き方でないと判定されない

  • 3.int型変数が偶数の時
#答え i%2==0

解説 これが奇数なら2の値を1にすると良い つまり何何の倍数の時割り切れたら0でtrueだよって意味

  • 4.int型変数iが0以下または12以上の時
#答え i<=0||i>=12

解説 <=のように比較演算子に=付けると0なら0含むそれ以下という意味になり=がないと含まれない以下となる つまりこの場合1から11まではfalseになる

  • 5.int型変数iが0でない時
#答え !(i==0)

解説 比較対象の先頭に!付けることでそれの反対の意味になる 別の書き方もあるが分かりづらい i!=0

問3.以下のソースコードを実行後、コンソール画面に何が表示されるか答えなさい

public class Test{                                            
    public static void main(String[] args){
        int score=72;
 
        if(score>60){
            System.out.println("可");
        }else if(score>70){
            System.out.println("良");
        }else if(score>80){
            System.out.println("優");
        }else{
            System.out.println("不可");
        }   
    }   
}
#答えは 可

解説 if文は上がtrueなら下を見ない

問4.以下のソースコードを実行した時の結果を選択肢から選びなさい

public class Test{
    public static void main(String[] args){
        int status = 1;
        String statusMsg;
        switch(status){
            case 0:
                statusMsg = "正常";
            case 1:
                statusMsg = "毒";
            case 2:
                statusMsg = "麻痺";
            case 3:
                statusMsg = "睡眠";
        }   
        System.out.println("今の状態は"+statusMsg+"です。");
    }
}
  • 選択肢

ア:今の状態は毒です。と表示される
イ:今の状態は正常毒麻痺睡眠です。と表示される
ウ:今の状態は毒麻痺睡眠です。と表示される
エ:コンパイルエラーになる

#答え エ

解説 string型が初期化されてないとコンパイル君が可能性が確実性に欠けると判断しエラーを起こす。対策は以下の通りである。
1.初期化しておく(答えは 今の状態は睡眠です。に変わる)

String statusMsg="";

2.もしくはdefault区を使用する(答えは 今の状態はです。に変わる)

switch(status){
    case 0:
         statusMsg = "正常";
    case 1:
        statusMsg = "毒";
    case 2:
        statusMsg = "麻痺";                       
    case 3:
        statusMsg = "睡眠";
    default:
        statusMsg ="";
}

問5.以下は3桁の数(100〜999)を乱数で繰り返し生成し、777が出るまでの回数を求めるプログラムである。空欄を産めよ

public class Test{                                            
    public static void main(String[] args){
        ① int TARGET = 777;               
        int count = 0;                    
        while(②){                        
            count++;                      
            int num = new java.util.③().nextInt(④)+⑤:
            if(num ==TARGET){⑥;}         
        }                                 
        System.out.println(TARGET+""+count+"回目に出ました");
    }                                     
}     
#答えは
public class Test{                                            
    public static void main(String[] args){
        final int TARGET = 777;
        int count = 0;
        while(true){
            count++;
            int num = new java.util.Random().nextInt(900)+100;
        if(num ==TARGET){break;}
        }       
        System.out.println(TARGET+"は"+count+"回目に出ました");
    }
}

解説 乱数が777になったらbreakで抜ける

問6.以下のソースコードは二次元配列の内容を全て表示するプログラムである、実行例の結果になるように空欄を埋めよ。

  • [実行例]

{
{5,6,7,8,},
{1,3,5,7,},
{2,4,6,8,},
{10,11,12,13,14,},
}

public class Test{              
    public static void main(String[] args){                  
        int[][] data = {{5,6,7,8},{1,3,5,7},{2,4,6,8},{10,11,12,13,14}};
        System.out.println("{");
        for(int i = 0;i < ① ;i++){
            System.out.print("②");
            for(int j = 0;j < ③ ;j++){   
                System.out.print( ④ +",");
            }                   
            System.out.println("⑤");
        }                       
        System.out.println("⑥");                           
    }                           
}                             
#答え
public class Test{
    public static void main(String[] args){
        int[][] data = {{5,6,7,8},{1,3,5,7},{2,4,6,8},{10,11,12,13,14}};                                                    
        System.out.println("{");
        for(int i = 0;i < data.length;i++){
            System.out.print("{");
            for(int j = 0;j < data[i].length ;j++){
                System.out.print(data[i][j]+",");
            }   
            System.out.println("},");
        }   
        System.out.println("}");
    }  
}   

解説 data.lengthで配列の要素数回して行の管理をし data[i].lengthでそれぞれの行の列を回して管理する data[i][j]でそれぞれの通知を入れていく。 ②と⑥は最初と終わりに単体についてるので書いた。

⚠️ **GitHub.com Fallback** ⚠️