大学の課題でjavaを用いた簡易プログラミングを行なっているのですが、キーボードで入力した値を用いた平均、合計、順位、分散、標準偏差を計算するプログラムを書こうと思っています。しかし、クラスを2つに分けて書くという制限があるためキーボード入力した値を、別のクラスに飛ばそうと思っているのですがうまくいきません。改善の余地がありましたら教えていただきたいです。
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
import java.io.*;
class kadai{
public static void main(String args[])throws IOException{
double sum=0,ave=0,varac=0,stddiv=0,a=0,b=0,e=0;
int i=100,d=0,t=0,n=0;
String s;
BufferedReader k=new BufferedReader(new InputStreamReader(System.in));
System.out.println("こんにちは!");
System.out.println("ここではテスト結果の合計・平均、順位、分散、標準偏差を算出できます。");
System.out.println("はじめにどの機能を使うのか教えてね。");
System.out.println("合計と平均なら1、順位を知りたいときは2、分散と標準偏差なら3と入力してください");
s=k.readLine();
t=Integer.parseInt(s);
Calc obj=new Calc(); switch(t){ case 1: System.out.println("次にテストの点数を入力してね。完了したらendと入力してください"); while(i!=-1){ s=k.readLine(); if(s.equals("end")){ i=-1; }else{ a=Double.parseDouble(s); sum=sum+a; }
}
System.out.println("生徒数を教えてください"); s=k.readLine(); b=Double.parseDouble(s); obj.set(sum,b); double m; m=obj.ave(); System.out.println("テストの合計点は"+sum+","+"平均点は"+m); break; case 2: System.out.println("生徒数は30人以内でお願いします!"); System.out.println("テストの点数を入力してね。入力し終わったらendと入力してください"); int flag=100; s=k.readLine(); while(flag!=-1){ if(s.equals("end")){ flag=-1; }else{
int[] l= new int[30];
l[n]=Double.parseDouble(s);
n=n+1;
}
}
obj.bable(l[]);
for(int y=0;y<30;y++){
System.out.println(l[y]);
}
break;
case 3:
System.out.println("生徒数を教えてね");
s=k.readLine();
d=Integer.parseInt(s);
System.out.println("テストの点数を入力してね。完了したらendと入力してください");
int[] c= new int[d];
for (int j=1; j<=d; j++) {
s=k.readLine();
int h = Integer.parseInt(s);
sum = sum+h;
c[j-1] = h;
} ave=sum/d; for(int j=0; j<d; j++) { e= (ave-c[j])*(ave-c[j]);
}
varac=e/d;
stddiv=Math.sqrt(varac);
System.out.println("分散は"+varac+","+"標準偏差は"+stddiv);
}
}
}
class Calc{
double a=0,b=0;
void set(double x,double y){
a=x;
b=y;
System.out.println("a="+x+"b="+y+"に設定");
}
double ave(){ return(a/b); }
void bable(double []Y){
Double[] X=new Double[30];
Double tmp=0.0;
int n=0;
X[n]=Y[n];
for(int j=n-1;j>0;j--){
for(int l=0;l<j;l++){
if(X[l]<X[l+1]){
tmp=X[l];
X[l]=X[l+1];
X[l+1]=tmp;
}
}
}
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/08 03:38
2017/08/08 06:10
2017/08/08 06:13
2017/08/08 08:08 編集
2017/08/08 08:19
2017/08/08 08:23
2017/08/08 08:25
2017/08/09 03:07
2017/08/09 03:20
2017/08/09 03:21