所以,当我试图保存并编译一切正常,直到我运行它。我的数组语法似乎有问题。有人可以帮我找到吗?当我运行这个程序时,grades()方法输出“AAA”。我在这个程序中尝试做的是从txt文件中读取文本并列出每一行,输出学生姓名和分数。现在在grade()方法中,我尝试输出计算每个学生成绩的字母等级,并使其进入循环,直到读取最后一个分数。
i
等级方法
public class ReadData
{
private static String[] names = new String[3];
private static int line;
private static int[] scores = new int[3];
private static float mean;
private static double stdDeviation;
public static void readData() throws FileNotFoundException
{
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
int l = 0;
// float sum = 0 ;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String [] words = line.split("\t");
names[l] = words[0];
scores[l] = Integer.parseInt(words[1]);
// sum+=scores[l];
System.out.println(" name: " + names[l] + ", score: " + scores[l]);
l++;
}
// System.out.println(scores[0]+ " " + scores[1]+ " " + scores[2]);
}
public static void fndMean()
{
float mean = ((25+65+89)/3);
System.out.println(" The mean is: " + mean);
}
public static void fndStandard() throws FileNotFoundException
{
double stdDeviation = Math.sqrt(((Math.pow(25-59, 2)+(Math.pow(65-59,2))+
(Math.pow(89-59, 2))))/3);
System.out.println("The Standard Deviation is: " + stdDeviation);
}
答案 0 :(得分:0)
当您执行以下操作时,您将在fndMean()和fndStandard()等方法中重新声明变量
double stdDeviation = Math.sqrt(((Math.pow(25-59, 2)+(Math.pow(65-59,2))+
(Math.pow(89-59, 2))))/3);
float mean = ((25+65+89)/3);
你已经将它们声明为top并且不需要再次执行,否则它只会在方法内部而不是在类中设置局部变量。你应该做的
stdDeviation = Math.sqrt(((Math.pow(25-59, 2)+(Math.pow(65-59,2))+
(Math.pow(89-59, 2))))/3);
mean = ((25+65+89)/3);
将这些变量设置为您在调用这些方法之前计算成绩时所期望的变量。
答案 1 :(得分:0)
这是打印fndMean
和fndStandard
方法的原因:
The mean is: 59.0
The Standard Deviation is: 26.407069760451147
mean
和stdDeviation
的总和为85.40706976045115。
现在,条件if(mean + stdDeviation <= scores[i])
检查该金额是否小于等于score[i]
,如果是,则打印“A&#39;”。在这两种情况中都可能是这样:
score
数组在两次方法调用之间被更改在这些条件之前打印得分值应该会给你更多的想法。