我的程序接收文件并将文件的特定部分添加到不同的数组。这是我的代码:
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();
}
}
}
这是文件:
Student1
5
a活动0.05
q测验0.10
p项目0.25
e考试0.30
f最终0.30
a100 a95 a100 a100 a100
q90 q80 q100 q80 q80 r90
p100 p95 p100 p85 p100
e77.5 e88
f92
我试图将粗体代码添加到单独的数组中。这封信应该在categoryCodes中,单词应该分类,并且数字应该进入类别权重。我已经尝试将第一部分添加到它的相应阵列中,但我不确定我是否正确地完成了它。另外,我不确定如何将这些行的第二和第三部分添加到正确的数组中。
答案 0 :(得分:0)
您可以使用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]);
}
}
答案 1 :(得分:0)
根据我的理解 如果输入为: -
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
}
}
您可以使用switch
语句代替if else
。