繰り返し(while文)

 


【例】Helloを5回描く

import java.applet.*;
import java.awt.Graphics;

public class while0 extends Applet {
    public void paint(Graphics g) {
        int i = 1;
        while(i <= 5) {
            i = i + 1;
            System.out.println("Hello");
        }
    }
}



【問題】
上の例をdrawStringを用いて書き直しなさい。

実行例



【例】0〜9の乱数を発生し、9が出たら終了する。
  その際、乱数の値を表示する。

import java.applet.*;
import java.awt.Graphics;
import java.util.Random;

public class while1 extends Applet {
    int y = 0;
    int ran=0;
    Random ransuu = new Random();
    public void paint(Graphics g) {
        while(ran < 9) {
            ran = ransuu.nextInt(10);
            System.out.println(ran);
        }
    }
}


【問題】
上の例をdrawStringを用いて書き直しなさい。

実行例



【例】ストップウォッチを作る(スレッドを使う)。
 この例ではjikkouの値を変える部分がないために、永久に実行し続ける
import java.applet.*; import java.awt.*; import java.awt.event.*; public class Stopwatch0 extends Applet implements Runnable{ int time=0; int jikkou = 1; Thread th; public void start() { th = new Thread(this); th.start(); } public void run() { while(jikkou == 1){ time = time + 1; try { Thread.sleep(10); } catch(InterruptedException e) { } repaint(); } } public void paint(Graphics g) { Font f = new Font("SansSerif", Font.BOLD,32); g.setFont(f); String t = Integer.toString(time); g.drawString(t,180,100); } } 実行例


【問題】
上の例題を、STOPボタンを押すと終了するように変えなさい。
(ヒント)ボタンを押すと jikkou=0 とする。

実行例



【問題】
上の問題に、STARTボタンとCLEARボタンを追加しなさい。

実行例



【例】ストップウォッチを作る(スレッドを使う)。
 1キーを押すとストップする。
import java.applet.*; import java.awt.*; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import java.awt.event.*; public class Stopwatch_Key0 extends Applet implements Runnable, KeyListener{ int time=0; int jikkou = 1; Thread th; int key = 1; public void init(){ addKeyListener(this); } public void start() { th = new Thread(this); th.start(); } public void run() { while(jikkou == 1){ time = time + 1; try { Thread.sleep(10); } catch(InterruptedException e) { } repaint(); } } public void keyPressed(KeyEvent ke){ if (ke.getKeyCode() == ke.VK_1){ jikkou = 0; System.out.println("0 was pressed"); } } public void keyTyped(KeyEvent ke){ } public void keyReleased(KeyEvent ke){ } public void paint(Graphics g) { g.drawString("1キーで終了します。",10,20); g.drawString("アプレットの領域をクリックした後、キーを押してください",10,40); Font f = new Font("SansSerif", Font.BOLD,32); g.setFont(f); String t = Integer.toString(time); g.drawString(t,180,150); } } 実行例




【問題】
上の問題を、1キーを押すストップ、2キーを押すと再開、3キーを押すとクリア、となるように修正しなさい。

実行例


 


【問題】
ストップウォッチにラップタイムとスプリットタイムを追加しなさいを作りなさい。
100分の1秒まで表示し、 START  LAP1  LAP2  LAP3 SPLIT1 SPLIT2  SPLIT3  STOP  CLEAR  のボタンを付けなさい。

トータルタイムとラップタイム、スプリットタイムの関係は次のようになります。




実行例