Javaの学習を始めて13日くらいの人のための問題集

Java

オブジェクト指向に入る前に基礎力をUPしておこう。

Q1
二つの整数を入力し、商を求める。もし、あまりがある場合は…の後にあまりを出力すること。

[実行結果]

01import java.util.Scanner;
02public class Jn2_1 {
03 
04  public static void main(String[] args) {
05    Scanner scan=new Scanner(System.in);
06    System.out.print("x:>");
07    int x=scan.nextInt();
08    System.out.print("y:>");
09    int y=scan.nextInt();
10    System.out.printf("%d÷%d=%d",x,y,x/y);
11    if(x%y !=0){
12      System.out.printf("...%d",x%y);
13    }
14    System.out.println();
15    scan.close();
16  }
17}

Q2
実行結果のように、秒(整数)を入力すると、何時間・何分・何秒かを表示する。
分・秒の値は、10以下であっても、0を補って2桁で表示する。

[実行結果]

秒を入力>3485
0時間58分05秒です。
01import java.util.Scanner;
02public class Q2{
03  public static void main(String[] args){
04    //定数はfinalをつけ大文字。単語の繋ぎ目はアンダーバー
05    final int SEC_OF_HOUR=3600; //1時間当たりの秒
06    final int SEC_OF_MIN=60; //1分当たりの秒
07    Scanner s=new Scanner(System.in); //スキャナーを使えるようにする。
08       
09    int n; //ユーザーからの入力値を受け取る変数
10    do{
11      System.out.print("秒を入力>");
12      n=s.nextInt();
13    }while(n<0);//負の値が入っていたら繰り返し
14 
15    //nを1時間当たりの秒で割った商が求めるhour
16    int hour=n/SEC_OF_HOUR;
17    //nを1時間当たりの秒で割った余りを1分あたりの秒で割った商が求めるmin
18    int min=(n%SEC_OF_HOUR)/SEC_OF_MIN;
19    //nを1分あたりの秒で割った余りがsec
20    int sec=n%SEC_OF_MIN;
21 
22    //%02dで2桁分の幅を確保し空いたスペースを0で埋める
23    System.out.printf("%d時間%02d分%02d秒です。",hour,min,sec);
24 
25  }
26}

Q3
下の図のように、2つの整数と偶数・奇数の選択を入力すると、その間の偶数か奇数の合計を表示する。
大小の逆入力や、負の数にも対応するようにする。

[実行結果]

整数1を入力>10
整数2を入力>-4
偶数(1),奇数(2)を選択>2
-4から10までの奇数の合計は21です。
01import java.util.Scanner;
02public class Jn2_3 {
03  public static void main(String[] args) {
04    //キーボード入力を使えるようにする準備(Scannerクラスのインスタンスを生成)
05    Scanner scan=new Scanner(System.in);
06    System.out.print("整数1を入力>");
07    //とりあえずminに入れる
08    int min=scan.nextInt();
09    System.out.print("整数2を入力>");
10    //とりあえずmaxに入れる
11    int max=scan.nextInt();
12    System.out.print("偶数(1),奇数(2)を選択>");
13    //説明変数selectに入れる
14    int select=scan.nextInt();
15    //selectが1ならばisEvenはtrue
16    boolean isEven=select == 1;
17    //minがmaxより大きかったら2値の入れ替え
18    if(min> max){
19      int temp = min;
20      min=max;
21      max=temp;
22    }
23    //合計を求めるときにはsumを0で初期化するところからスタート
24    int sum=0;
25    //min~maxまでの間を回すループ(端含む)
26    for(int i=min;i<=max;i++){
27      //(偶数選択かつ偶数)または(奇数選択かつ奇数)が加算していく数
28      if((isEven && i%2==0) ||(!isEven && i%2 !=0)){
29        sum+=i;
30      }
31    }
32    System.out.printf("%dから%dまでの%sの合計は%dです。", min,max,isEven ? "偶数":"奇数",sum);
33    scan.close();
34  }
35}

コメント

タイトルとURLをコピーしました