ループの適用

3622 ワード

クイズゲーム:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int number = (int)(Math.random()*100+1);
		int a;
		int count = 0;
		
		do{
			a = in.nextInt();
			count = count +1;
			if(a<number){
				System.out.println(" ");
			}
			else if(a>number){
				System.out.println(" ");
			}
		}while(a != number);
		
		System.out.println(" , , "+count+" ");
	}

}

逆順序:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int number = in.nextInt();
		do {
			int digit = number % 10;
			System.out.print(digit);
			number = number / 10;			
		} while (number > 0);
	}

}

出力結果:
700
007
改善:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int number = in.nextInt();
		int result = 0;
		do {
			int digit = number % 10;
			result = result*10 +digit;
			number = number / 10;			
		} while (number > 0);
		System.out.println(result);
	}

}

出力結果:
700
7
f=1+1/2+1/3+......+1/nを計算するプログラムを書き出します:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 0.0;
		for(int i=1; i<=n; i++){
			sum += 1.0/i;			
		}
		System.out.println(sum);
	}

}

出力結果:
100
5.187377517639621
出力する結果を小数2桁残したい場合は?出力のフォーマットを変更するには、System.out.printで変更:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 0.0;
		for(int i=1; i<=n; i++){
			sum += 1.0/i;			
		}
		System.out.printf("%.2f",sum);
	}

}

出力結果:
100
5.19
f=1-1/2+1/3-1/4+・・+1/nが必要なら?上記のプログラムをさらに改善し、signを導入します.
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 0.0;
		int sign = 1;
		for(int i=1; i<=n; i++){
			sum += sign * 1.0/i;
			sign = -sign;
		}
		System.out.printf("%.2f",sum);
	}

}

あるいは、次のような方法もあります.
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 0.0;
		int sign = 1;
		for(int i=1; i<=n; i++){
//			sum += sign * 1.0/i;
//			sign = -sign;
			if( i%2 == 1 ){
				sum += 1.0/i;
			}
			else{
				sum -= 1.0/i;
			}
		}
		System.out.printf("%.2f",sum);
	}

}

2つの数の最大公約数を求めます:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		int gcd = 1;
		for(int i=2; i<=a && i<=b; i++){
			if(a%i==0 && b%i==0){
				gcd=i;
			}
		}
		System.out.println(a+" "+b+" "+gcd);
	}

}

転がり相殺法:
public class Au {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		while(b!=0){
			int r = a % b;
			a = b;
			b = r;
			
		}
		int gcd = a;
		System.out.println(gcd);
	}

}