私の問題は、私は、出力する形式の別のファイルに3人の生徒の得点のためのlettergradeをしたいということです。別のメソッドからArrayListに表示
ここで私が直面している問題は、toString2メソッドにスクロールしてプログラムを実行し、3つのスコアを取り、計算結果に応じて正しい文字グレードを出力することです。代わりに私のプログラムは制御されていないループに入り、[]で終わります。どうすればこの問題を解決できますか?
package file;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class ReadData2
{
ArrayList<String> name = new ArrayList<String>();
ArrayList<Double> score = new ArrayList<Double>();
ArrayList<String> lettergrade = new ArrayList<String>();
double mean;
double std;
public ReadData2()
{
mean= 0;
std=0;
}
public void readData(File file) throws FileNotFoundException
{
//File file = new File("data.txt");
Scanner scanner = new Scanner(file);
int l = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String [] words = line.split("\t");
name.add(words[0]);
score.add(Double.parseDouble(words[1]));
}
}
public String toString()
{
StringBuilder out = new StringBuilder();
for(String n: name)
{
out.append(n);
out.append("\n");
}
for(double n: score)
{
out.append(n);
out.append("\n");
}
return out.toString();
}
public double fndMean()
{
double mean = 0;
double sum = 0;
for(Double n: score)
{
sum= sum+n;
}
mean= sum/score.size();
return mean;
}
public double fndStandard()
{
double sumOfDifferences = 0;
double mean = fndMean();
for(Double n: score)
{
sumOfDifferences += Math.pow((n- mean),2);
}
double temp = sumOfDifferences/ score.size();
return Math.sqrt(temp);
}
public ArrayList<String> toString2(File file) throws FileNotFoundException
{
StringBuilder grades = new StringBuilder();
double mean1 = fndMean();
double std1 = fndStandard();
Scanner scanner = new Scanner(file);
int l = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String [] words = line.split("\t");
name.add(words[0]);
score.add(Double.parseDouble(words[1]));
for(double n: score)
{
grades.append(n);
grades.append("\n");
}
for(int i = 0; i < ((score.size())) && i < name.size(); i++)
{
if(mean1 +std1 < score.get(i))
{
System.out.println("A");
}
else if((score.get(i) >= mean1+(std1/3)) && (mean1 +std1)> score.get(i))
{
System.out.println("B");
}
else if((score.get(i) >= mean1-(std1/3)) && (mean1 +(std1/3))> score.get(i))
{
System.out.println("C");
}
else if((score.get(i) >= mean1-(std1)) && (mean -(std1/3))> score.get(i))
{
System.out.println("D");
}
else if(mean1 - std1 > score.get(i))
{
System.out.println("F");
}
}
}
return lettergrade;
}
}
コードをフォーマットするとよいでしょうか?自動フォーマットにはIDEを使用することをお勧めします。 –
いいえ私はちょうど行った – JustAJAVAGUY
ありがとう、どこが間違いですか?あなたはデバッガを使いましたか? –