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

Java

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

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

[実行結果]

x:>7
y:>3
7÷3=2...1
import java.util.Scanner;
public class Jn2_1 {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("x:>");
		int x=scan.nextInt();
		System.out.print("y:>");
		int y=scan.nextInt();
		System.out.printf("%d÷%d=%d",x,y,x/y);
		if(x%y !=0){
			System.out.printf("...%d",x%y);
		}
		System.out.println();
		scan.close();
	}
}

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

[実行結果]

秒を入力>3485
0時間58分05秒です。
import java.util.Scanner;
public class Q2{
	public static void main(String[] args){
		//定数はfinalをつけ大文字。単語の繋ぎ目はアンダーバー
		final int SEC_OF_HOUR=3600; //1時間当たりの秒
		final int SEC_OF_MIN=60; //1分当たりの秒
		Scanner s=new Scanner(System.in); //スキャナーを使えるようにする。
			
		int n; //ユーザーからの入力値を受け取る変数
		do{
			System.out.print("秒を入力>");
			n=s.nextInt();
		}while(n<0);//負の値が入っていたら繰り返し

		//nを1時間当たりの秒で割った商が求めるhour
		int hour=n/SEC_OF_HOUR; 
		//nを1時間当たりの秒で割った余りを1分あたりの秒で割った商が求めるmin
		int min=(n%SEC_OF_HOUR)/SEC_OF_MIN;
		//nを1分あたりの秒で割った余りがsec
		int sec=n%SEC_OF_MIN;

		//%02dで2桁分の幅を確保し空いたスペースを0で埋める
		System.out.printf("%d時間%02d分%02d秒です。",hour,min,sec);

	}
}

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

[実行結果]

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

コメント

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