第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