2014-10-03 90 views
0

我工作的分配问题,其即时通讯停留在:传递字符串的ArrayList的方法返回一个double值

我提取的文本文件grades.txt到所谓的一个ArrayList studentgrade 我想接着使用提取到arraylist的等级来转换等级。

转换等级的目的是读取文本文件的行,然后将字符串值转换为点;然后将所有等级总和点加起来。

package Q2; 
import java.util.StringTokenizer; 
import java.util.ArrayList; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 
import java.util.List; 

public class studentGPA { 

private static String studentGrades[]; 

public static void main(String[] args) throws IOException { 
    double gpa, points = 0;  
    //opening grades and extracting to array 

    File file = new File ("Grades.txt"); 
    Scanner inputFile = new Scanner(file); 

    ArrayList<String> studentlist = new ArrayList<String>(); 

      while (inputFile.hasNext()) 
      { 
       studentlist.add(inputFile.nextLine()); 
      } 

/*print out student ID 

    for (int index = 0; index<studentlist.size(); index++) 
    { 
     StudentID = (studentlist.get(index)).split(" ",11); 
     System.out.println("studentID:" + index + ": " + StudentID[0]); 

    } 
    System.out.println(); */ 



      studentGrades = null; 

    for (int index = 0; index<studentlist.size(); index++) 
    { 
     String data[] = studentlist.get(index).split(" "); 
     for (int index_grade = 0 ; index_grade < 8;) 
     { 
      studentGrades[index_grade] = data[index_grade+3]; 
     } 
     System.out.println(convertGrade(studentGrades)); 

    } 

    //testing purposes 
    /*for (int index = 0; index<studentlist.size(); index++) 
    { 
     StudentGrade = (studentlist.get(index)).split(" ",11); 


     System.out.println("studentID:" + index + ": " + StudentGrade[3] + StudentGrade[4] + 
       StudentGrade[5] + StudentGrade[6] + StudentGrade[7] + StudentGrade[8] + StudentGrade[9]); 
    }*/ 




    //answer should be 46 but im getting 14 


} 

public static double convertGrade(String studentgrade[]) { 
     double points = 0; 

     for (int index = 3; index<studentgrade.length; index++) 
     { 
     if (studentgrade[index].contains("H")) 
      points = 7; 
     else if (studentgrade[index].contains("D")) 
      points = 6; 
     else if (studentgrade[index].contains("C")) 
      points = 5; 
     else if (studentgrade[index].contains("P")) 
      points = 4; 
     else if (studentgrade[index].contains("F")) 
      points = 0; 
     points = points + points; 
     } 
     return points; 
    } 


} 
  • 57363乔伊莱德DDCPHHCD ==== 6 + 6 5 4 + 7 + 7 5 + 6 = 46
  • 72992劳拉Norder HHHDDHHH
    • 71258艾琳超过CFCDCCCP

编辑:

+0

我看到一个接受'的String []'和'返回一个double'方法,但没有一个方法接受'名单'并返回'double'。除此之外,您是否可以尝试并明确将点放入数据结构的位置?这很难说。 – Makoto 2014-10-03 00:58:06

+0

@Makoto似乎ArrayList的每个元素都被分割为空格,这会给出''String []''。 – Ghostkeeper 2014-10-03 00:59:57

+0

对不起,没有解释;我想返回一个double值,这样我就可以将这个double值写到一个名为GPA.text的新文本文件中,这个文件我还没有实现;这个问题的目的是提取分数并将它们转换为分数,然后我可以计算出最终的GPA – JavaisHard 2014-10-03 01:37:20

回答

0

你必须做这样的:

System.out.println(convertGrade(StudentGrade)); 

编辑

for (int index = 0; index<studentlist.size(); index++) 
{ 
    String data[] = studentlist.get(index).split(" "); 
    for (int index_grade = 0 ; index_grade < 8) 
    { 
     StudentGrade[index_grade] = data[index_grade+3]; 
    } 
    System.out.println(convertGrade(StudentGrade)); 
} 
+0

这就是答案。 ''convertGrade''方法的结果在任何地方都不会被使用。一定要把它放在''for''循环中。另外,您可能想要跳过“convertGrade”方法中数组的前3个元素,因为该名称可能还包含H,D,C,P或F. – Ghostkeeper 2014-10-03 01:02:03

+0

嗨,Randyka,我已经实现了什么你已经建议并且现在该方法输出结果;谢谢!...但问题是它输出错误的结果输出8当第一行应输出46 .... Ghostkeeper:我如何跳过?我必须使用修剪? – JavaisHard 2014-10-03 01:45:43

+0

跳过,只需添加+3索引 – 2014-10-03 02:39:34

相关问题