带有for循环和if语句的数组

时间:2017-01-16 22:22:17

标签: java arrays if-statement for-loop

所以,当我试图保存并编译一切正常,直到我运行它。我的数组语法似乎有问题。有人可以帮我找到吗?当我运行这个程序时,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);
}

2 个答案:

答案 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)

这是打印fndMeanfndStandard方法的原因:

 The mean is: 59.0
The Standard Deviation is: 26.407069760451147

meanstdDeviation的总和为85.40706976045115。

现在,条件if(mean + stdDeviation <= scores[i])检查该金额是否小于等于score[i],如果是,则打印“A&#39;”。在这两种情况中都可能是这样:

  • txt文件中第二列(选项卡)中的值均超过85
  • score数组在两次方法调用之间被更改

在这些条件之前打印得分值应该会给你更多的想法。