Java 向数组中添加行的特定部分

Java 向数组中添加行的特定部分,java,arrays,Java,Arrays,我的程序接收一个文件并将文件的特定部分添加到不同的数组中。这是我的密码: public class GradeBookApp { public static void main(String[] args) throws IOException { String fileName = ""; String name = ""; char[] categoryCodes = new char[5]; String[] categories = new String[5];

我的程序接收一个文件并将文件的特定部分添加到不同的数组中。这是我的密码:

public class GradeBookApp {

public static void main(String[] args) throws IOException {

  String fileName = "";
  String name = "";
  char[] categoryCodes = new char[5];
  String[] categories = new String[5];
  double[] categoryWeights = new double[5];
  double[][] gradeTable;
  GradeBook myGB = new GradeBook (name, categoryCodes, 
     categories, categoryWeights);


  if (args.length > 0) {

     for (int i = 0; i < args.length; i++) {
        System.out.println("File \"" + args[i] 
           + "\" read in and Gradebook object created.");

        fileName = args[i];
        Scanner scanFile = new Scanner(new File(fileName));

        name = scanFile.nextLine();
        int numOfCodes = scanFile.nextLine();

        for (i = 0; i < 5; i++) {
           categoryCodes = scanFile.nextLine().substring(0).toCharArray();
        }
     }
 }
公共类GradeBookApp{
公共静态void main(字符串[]args)引发IOException{
字符串fileName=“”;
字符串名称=”;
char[]categoryCodes=新字符[5];
字符串[]类别=新字符串[5];
double[]类别权重=新的double[5];
双[][]评分表;
成绩册myGB=新成绩册(名称、类别代码、,
类别、分类权重);
如果(args.length>0){
对于(int i=0;i
以下是文件:

学生1
5
a活动0.05
q测验0.10
p项目0.25
e考试0.30
f最终0.30

a100 a95 a100 a100 a100 a100
q90 q80 q100 q80 q80 r90
p100 p95 p100 p85 p100
e77.5 e88
f92


我正在尝试将粗体代码添加到单独的数组中。字母应该放在类别代码中,单词应该放在类别中,数字应该放在类别权重中。我已经尝试将第一部分添加到其各自的数组中,但我不确定是否正确。此外,我不确定如何添加tho的第二和第三部分请将行插入正确的数组。

您可以使用
split()
方法

    for (i = 0; i < 5; i++) {
       String[] all = scanFile.nextLine().split(" ");
       if(all.length == 3 && all[0].length() == 1 && all[2].matches("(\\d+\\.\\d+)")){
          categoryCodes[i] = all[0].charAt(0);
          categories[i] = all[1];
          categoryWeights[i] = Double.parseDouble(all[2]);
       }
    }
(i=0;i<5;i++)的
{
字符串[]all=scanFile.nextLine().split(“”);
如果(all.length==3&&all[0]。length()==1&&all[2]。匹配(“(\\d+\\.\\d+))){
类别代码[i]=all[0]。字符(0);
类别[i]=所有[1];
categoryWeights[i]=Double.parseDouble(全部[2]);
}
}
根据我的理解 如果输入为:-

a Activities 0.05
任务必须类似于:-

categoryCodes[0] = 'a';
categories[0] = "Activities";
categoryWeights[0] = 0.05;
现在,如果args数组中
a,Activities,0.05
的索引为
0
1
2
,则可以使用

     for(int i = 0; i < arrg.length; i++){
        if(i %3 == 0){
             //this would be char a 
        }else if(i %3 == 1){
               // this would be your string part
        }else{
          //i %3 == 2 this would be your number part
        }
     }
for(int i=0;i

您可以使用
switch
语句而不是
if-else

谢谢!categoryCodes的部分工作得很好,但后两个部分打印为[Ljava.lang.String;@7ea987ac和[D@7ea987ac.如何修复此问题?@me123要查看包含的数组,请使用以下命令:
System.out.println(arrays.toString(categories));
类别权重执行相同操作