Top >Java 練習問題集

4. 繰り返し

以下、

import java.io.*;

public class Exercise
{
    public static void main( String[] args ) throws IOException
    {
        :
        :
    }
}

の記述は省略します

練習問題 4 - 1

SPAMという単語を 10 回表示するプログラムを作成しなさい


forint i = 0 ; i < 10 ; i++ )
    System.out.print( "SPAM" );

練習問題 4 - 2

九九、三の段( 3 ~ 27 の 3 の倍数)を表示するプログラムを作成しなさい


forint i = 1 ; i <= 9 ; i++ )
    System.out.print( ( 3 * i ) + " " );

練習問題 4 - 3

2 の 1 乗から 8 乗までを計算し表示するプログラムを作成しなさい


int x = 1;

forint n = 1 ; n <= 8 ; n++ )
{
    x *= 2;
    System.out.println( "2の" + n + "乗=" + x );
}

次のようにも書ける

forint n = 1, x = 2 ; n <= 8 ; n++, x *= 2 )
    System.out.println( "2の" + n + "乗=" + x );

練習問題 4 - 4

7 の階乗を計算し、表示するプログラムを作成しなさい


int x = 1;

forint i = 2 ; i <= 7 ; i++ )
    x *= i;

System.out.println( x );

練習問題 4 - 5

整数を 10 回入力し、平均値を求めるプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int sum = 0;

forint i = 0 ; i < 10 ; i++ )
{
    int value = Integer.parseInt( br.readLine() );
    sum += value;
}

System.out.println( "平均は" + ( sum / 10 ) );

練習問題 4 - 6

整数、0 か 1 を 10 回入力するこれを対戦成績と考え、0 を負け、1 を勝ちとして、勝ちの総数、負けの総数を表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int wins = 0;

forint i = 0 ; i < 10 ; i++ )
{
    int result = Integer.parseInt( br.readLine() );

    if( result == 1 )
        wins += 1;
}

System.out.println( "勝ち" + wins + "回、負け" + ( 10 - wins ) + "回" );

練習問題 4 - 7

次のプログラムを作成しなさい

  • 巨人、阪神戦で毎回の得点を入力する(1回~9回)
  • 入力が終わったら、それぞれの得点とどちらが勝ったかを表示する

BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int giants = 0;
int tigers = 0;

forint game = 1 ; game <= 9 ; game++ )
{
    System.out.print( game + "回表、巨人の得点は?" );
    giants += Integer.parseInt( br.readLine() );

    System.out.print( game + "回裏、阪神の得点は?" );
    tigers += Integer.parseInt( br.readLine() );
}

System.out.println( "巨人:" + giants + "点, 阪神:" + tigers + "点" );

if( giants > tigers )
    System.out.println( "巨人の勝ち" );
else if( giants < tigers )
    System.out.println( "阪神の勝ち" );
else
    System.out.println( "引き分け" );

練習問題 4 - 8

自然数(正の整数)を 10 回入力し、最大値を求めるプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int max_value = 0;

forint i = 0 ; i < 10 ; i++ )
{
    int value = Integer.parseInt( br.readLine() );

    if( value > max_value )
        max_value = value;
}

System.out.println( "最大値=" + max_value );

練習問題 4 - 9

整数を 10 回入力し、最大値と最小値を求めるプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int max_value = 0, min_value = 0;

forint i = 0 ; i < 10 ; i++ )
{
    int value = Integer.parseInt( br.readLine() );

    if( i == 0 )
    {
        max_value = value;
        min_value = value;
    }
    else
    {
        if( value > max_value )
            max_value = value;

        if( value < min_value )
            min_value = value;
    }
}

System.out.println( "最大値=" + max_value + " 最小値=" + min_value );

または、

BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int max_value = 0, min_value = 0;

forint i = 0 ; i < 10 ; i++ )
{
    int value = Integer.parseInt( br.readLine() );

    if( i == 0 || value > max_value )
        max_value = value;

    if( i == 0 || value < min_value )
        min_value = value;
}

System.out.println( "最大値=" + max_value + " 最小値=" + min_value );

または、

BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );

int max_value = Integer.parseInt( br.readLine() );
int min_value = max_value;

forint i = 1 ; i < 10 ; i++ )
{
    int value = Integer.parseInt( br.readLine() );

    if( value > max_value )
        max_value = value;

    if( value < min_value )
        min_value = value;
}

System.out.println( "最大値=" + max_value + " 最小値=" + min_value );

練習問題 4 - 10

個数を示す数値を入力し、その個数分だけ*を表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int count = Integer.parseInt( br.readLine() );

forint i = 0 ; i < count ; i++ )
    System.out.print( "*" );

whileを使用した解答例

BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int count = Integer.parseInt( br.readLine() );

while( count > 0 )
{
    System.out.print( "*" );
    count--;
}

練習問題 4 - 11

個数を示す数値を入力し、その個数分だけ 0 ~ 9 の数字を表示するプログラムを作成しなさい数字は 0, 1, 2, 3, , の順に表示し、9 の次は 0 に戻るものとします


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );

int count = Integer.parseInt( br.readLine() );

forint i = 0, out = 0 ; i < count ; i++ )
{
    System.out.print( out++ );

    if( out > 9 )
        out = 0;
}
別の解答例
BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );

int count = Integer.parseInt( br.readLine() );

forint i = 0 ; i < count ; i++ )
    System.out.print( i % 10 );

練習問題 4 - 12

数値を繰り返し入力し、合計が 100 を超えたら入力を止めて合計を表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int sum = 0;

while( sum <= 100 )
    sum += Integer.parseInt( br.readLine() );

System.out.println( "合計は " + sum );

練習問題 4 - 13

ストライク・カウントを数えるプログラムを作成しなさい

  • 1球ごとにストライクかボールかを入力する
  • 3ストライクまたは4ボールになったら入力を止め、ストライクとボールのカウントを表示する

BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int strike = 0;
int ball = 0;

while( strike < 3 && ball < 4 )
{
    System.out.print( "ストライク=1 or ボール=2 ?" );

    int judge = Integer.parseInt( br.readLine() );

    if( judge == 1 )
        strike++;
    else if( judge == 2 )
        ball++;
}

System.out.println( ball + "ボール," + strike + "ストライク" );

練習問題 4 - 14

前の問題に次の修正を加えなさい

  • 1球ごとにストライク、ボール、ファウルの何れかを入力する(残念ながらヒットにはなりません)
  • ファウルの場合、2ストライクまではストライクにカウントするが、3ストライクにはならない
  • 3ストライクまたは4ボールになったら入力を止め、ストライクとボールのカウントを表示する

BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int strike = 0;
int ball = 0;

while( strike < 3 && ball < 4 )
{
    System.out.print( "ストライク=1 or ボール=2 or ファウル=3?" );

    int judge = Integer.parseInt( br.readLine() );

    if( judge == 1 )
        strike++;
    else if( judge == 2 )
        ball++;
    else if( judge == 3 && strike < 2 )
        strike++;
}

System.out.println( ball + "ボール," + strike + "ストライク" );

練習問題 4 - 15

入力された数が素数かどうかを判定するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int value = Integer.parseInt( br.readLine() );
int n;

for( n = 2 ; n <= ( value / 2 ) ; n++ ){
    if( ( value % n ) == 0 )
        break;
}

if( n > ( value / 2 ) )
    System.out.println( value + "は素数です" );
else
    System.out.println( value + "は素数ではありません" );

練習問題 4 - 16

2 以上の数値を入力し、素因数分解した結果を表示しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int n = Integer.parseInt( br.readLine() );

forint x = 2 ; n > 1 ; x++ ){
    while( ( n % x ) == 0 ){
        System.out.print( x + " " );
        n /= x;
    }
}

練習問題 4 - 17

九九表(一の段~九の段)を表示するプログラムを作成しなさい


forint p = 1 ; p <= 9 ; p++ )
{
    forint q = 1 ; q <= 9 ; q++ )
        System.out.printf(" %2d", p * q );

    System.out.println();
}

練習問題 4 - 18

数値を繰り返して入力し、0 が入力されたら入力を止め、それまでの合計を表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int sum = 0;

for( ; ; )
{
    int value = Integer.parseInt( br.readLine() );

    if( value == 0 )
        break;

    sum += value;
}

System.out.println( "合計は" + sum );

練習問題 4 - 19

数値を繰り返して入力し、0 が入力されたら入力を止め、平均値を表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int sum = 0;
int count = 0;

for( ; ; )
{
    int value = Integer.parseInt( br.readLine() );

    if( value == 0 )
        break;

    sum += value;
    count++;
}

System.out.println( "平均は" + ( sum / count ) );

練習問題 4 - 20

サイズを示す数値を入力し、何等かの文字で例のような三角形を表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int size = Integer.parseInt( br.readLine() );

forint i = 0 ; i < size ; i++ )
{
    forint j = 0 ; j <= i ; j++ )
        System.out.print( "$" );

    System.out.println();
}

練習問題 4 - 21

サイズを示す数値を入力し、そのサイズの×印を何等かの文字で表示するプログラムを作成しなさい


BufferedReader br = new BufferedReader(
                        new InputStreamReader( System.in ) );
int size = Integer.parseInt( br.readLine() );

forint i = 0 ; i < size ; i++ )
{
    forint j = 0 ; j < size ; j++ )
    {
        if( i == j || ( size - i - 1 ) == j )
            System.out.print( "X" );
        else
            System.out.print( " " );
    }

    System.out.println( "" );
}

練習問題 4 - 22

フィボナッチ数列を表示するプログラムを作成しなさい

最初の2つの項を 0、1 とし、1000 まで( 1000 以下の項)を表示するものとします


int     n1 = 0;
int     n2 = 1;
int     n3 = n1 + n2;

while( n1 <= 1000 )
{
    System.out.print( n1 + "," );

    n1 = n2;
    n2 = n3;
    n3 = n1 + n2;
}
PAPER BOWL
NEZEN