第3回セミナー

宿題の解答例と解説

Lesson7 配列

データの統計量を計算する

import java.io.*;

class Example4 {
  public static void main(String[] args) throws IOException {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("5人の点数を入力してください:");
    int[] score=new int[5];
    for(int i=0;i<score.length;i++){
      System.out.print((i+1)+"人目:");
      score[i]=Integer.parseInt(br.readLine());
    }
    int max=Integer.MIN_VALUE;
    int min=Integer.MAX_VALUE;
    double sum=0,sum2=0;
    for(int i=0;i<score.length;i++){
      if(max<score[i]) max=score[i];
      if(min>score[i]) min=score[i];
      sum+=score[i];
      sum2+=score[i]*score[i];
    }
    double ave=sum/score.length;
    double std=Math.sqrt(sum2/score.length-ave*ave);
    System.out.println("最高点:"+max);
    System.out.println("最低点:"+min);
    System.out.println("平均点:"+ave);
    System.out.println("標準偏差:"+std);
  }
}

三目並べ

import java.io.*;

class Sanmoku {
  int[][] state=new int[3][3];

  // マス(i,j)の状態
  String masu(int i,int j){
    switch(state[i][j]){
    case 1: return "○";
    case 2: return "×";
    }
    return "  ";
  }

  // 表示
  void disp(){
    System.out.println("   1  2  3");
    System.out.println("1 "+masu(0,0)+"|"+masu(0,1)+"|"+masu(0,2));
    System.out.println("  --+--+--");
    System.out.println("2 "+masu(1,0)+"|"+masu(1,1)+"|"+masu(1,2));
    System.out.println("  --+--+--");
    System.out.println("3 "+masu(2,0)+"|"+masu(2,1)+"|"+masu(2,2));
  }

  // コンピュータの意思決定
  void decide(){
    while(true){
      int i=(int)(Math.random()*3);
      int j=(int)(Math.random()*3);
      if(state[i][j]==0){
        state[i][j]=2;
        break;
      }
    }
  }

  // 手tが勝っているかどうかの判定
  boolean hantei(int t){

    // 縦の判定
    for(int i=0;i<3;i++)
      if(state[0][i]==t && state[1][i]==t && state[2][i]==t) return true;

    // 横の判定
    for(int i=0;i<3;i++)
      if(state[i][0]==t && state[i][1]==t && state[i][2]==t) return true;

    // 斜めの判定
    if(state[0][0]==t && state[1][1]==t && state[2][2]==t) return true;
    if(state[2][0]==t && state[1][1]==t && state[0][2]==t) return true;

    return false;
  }

  // ゲームのメインループ
  void play() throws IOException {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("***三目並べ***");
    for(int k=0;k<9;k++){
      disp();
      System.out.print("どこに打つ?");
      String str=br.readLine();
      int i=Integer.parseInt(""+str.charAt(0));
      int j=Integer.parseInt(""+str.charAt(2));
      state[i-1][j-1]=1;
      if(hantei(1)){
        disp();
        System.out.println("あなたの勝ちです");
        System.exit(1);
      }
      if(k==8) break;
      decide();
      if(hantei(2)){
        disp();
        System.out.println("あなたの負けです");
        System.exit(1);
      }
    }
    disp();
    System.out.println("引き分けです");
  }

  // メイン
  public static void main(String[] args) throws IOException {
    (new Sanmoku()).play();
  }
}

Javaセミナー2014


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS