Javaの学習を始めて10日くらいの人のための問題集(メソッド2)

Java

メソッド基礎の2回目です。

Q1
月を引数で受け取るとその月の日数を返すメソッドを作成せよ。(2月は28日としてよい)
mainメソッドで月を入力させ、その月の日数を表示する。

[実行結果]
月を入力してください>11
11月の日数は30日です。

public class Month {
	public static void main(String[] args) {
		System.out.print("月を入力してください>");
		int num=new java.util.Scanner(System.in).nextInt();
		System.out.println(num +"月の日数は"+getNumberOfDays(num) + "日です。");
	}
	public static int getNumberOfDays(int month){
		switch(month){
		case 2:
			return 28;
		case 4:
		case 6:
		case 9:
		case 11:
			return 30;
		default :
			return 31;
		}
	}
}

Q
引数で整数を受け取り、それが偶数かどうかをbooleanで返すメソッドを作成せよ。
またそれを利用して以下の処理を実現せよ。

[実行結果]
整数>11
11は奇数です

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("整数>");
		int num=scan.nextInt();
		String str;
		if(isEven(num)){
			str="整数";
		}else{
			str="奇数";
		}
		System.out.printf("%dは%sです",num,str);

	}
	public static boolean isEven(int n){
		return n%2==0;
	}
}

Q
引数で文字列と整数を受け取り、その文字を整数個並べた文字列を返却するメソッドを作成する。
またそれを利用して以下の処理を実現せよ。

[実行結果]
繰り返す文字>Hello
繰り返す回数>5
HelloHelloHelloHelloHello

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("繰り返す文字>");
		String letter=scan.next();
		System.out.print("繰り返す回数>");
		int num=scan.nextInt();
		System.out.println(getStr(letter,num));

	}
	public static String getStr(String letter,int num){
		String str="";
		for(int i=0;i<num;i++){
			str+=letter;
		}
		return str;
	}
}

Q
引数でint型の配列を受け取り、その配列の要素を2倍にするメソッドを作成せよ。
そのメソッド使用し以下の処理を実現せよ。
[実行結果]
要素数>3
要素0>3
要素1>5
要素2>10
要素を2倍にしました。
{6,10,20,}

import java.util.*;
public class Main8{
	public static void main(String[] args){
		Scanner scan=new Scanner(System.in);
		System.out.print("要素数>");
		int num=scan.nextInt();
		int[] arr=new int[num];
		for(int i=0;i<arr.length;i++){
			System.out.printf("要素%d>",i);
			arr[i]=scan.nextInt();
		}
		twiceArray(arr);
		System.out.println("要素を2倍にしました");
		System.out.print("{");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+",");
		}
		System.out.println("}");
	}
	public static void twiceArray(int[] arr){
		for(int i=0;i<arr.length;i++){
			arr[i]*=2;
		}	
	}
}

Q
int型配列を引数として受け取り、それを{7,5,10}のようにフォーマットした文字列を返却するメソッドを作成する。
そのメソッドを用いて以下の処理を実現する。
[実行例]
0~100の乱数を3つ生成します。
{22,86,3}

import java.util.*;
public class PrintApp {
	public static void main(String[] args) {
		Random rand =new Random();
		int[] arr=new int[3];
		System.out.println("0~100の乱数を3つ生成します");
		for(int i=0;i<3;i++){
			arr[i]=rand.nextInt(101);
		}
		System.out.println(printArr(arr));
	}
	public static String printArr(int[] arr){
		String str="{";
		for(int i=0;i<arr.length;i++){
			str+=arr[i];
			if(i !=arr.length-1){
				str+=",";
			}
		}
		str+="}";
		return str;
	}
}

Q
2つのint型配列を受け取り、その配列の要素を足した新たな配列を返却するメソッドを作成する。(2つの配列の要素数は同じとしてよい)
そのメソッド利用し以下の処理を実現する。(出力部分では上の問題で作成したメソッドを利用すること)
[実行例]
2つの配列{3,4,5}と{4,5,6}を足した新たな配列を作成します。
{7,9,11}

public class SumArray{
	public static void main(String[] args){
		int[] ar1={3,4,5};
		int[] ar2={4,5,6};
		int[] result=createSumArray(ar1,ar2);

		System.out.printf("2つの配列%sと%sを足した新たな配列を作成します%n",
PrintApp.printArr(ar1),
PrintApp.printArr(ar2));
		System.out.println(PrintApp.printArr(result));
	}
	public static int[] createSumArray(int[] arr1,int[] arr2){
		int[] newArray=new int[arr1.length];
		for(int i=0;i<newArray.length;i++){
			newArray[i]=arr1[i]+arr2[i];
		}
		return newArray;
	}
}

Q
引数でint配列一つを受け取りバブルソートにて昇順に並び替えるメソッドを作成せよ。(クラス名はSortAppとすること)

public static void bubbleSort(int[] arr){
		for(int i=0;i<arr.length-1;i++){
			for(int j=arr.length-1;j>i;j--){
				if(arr[j-1]>arr[j]){
					int temp=arr[j-1];
					arr[j-1]=arr[j];
					arr[j]=temp;
				}
			}
		}
	}

そのメソッドを使って以下の処理を実現せよ。
[実行例]
0~100のランダムな数値を20個作って昇順に並べました。
{2,4,4,11,16,24,28,38,41,42,48,55,61,63,70,72,80,98,98,99}

コメント

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