2014-10-22 4 views
1

Моя программа принимает файл и добавляет определенные части файла в разные массивы. Вот мой код:Добавление определенной части строки в массив

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
Деятельность 0,05
д Викторины 0,10
р Проекты 0,25
е Exams 0,30
е Финал 0,30

a100 a95 a100 a100 a100
Q90 Q80 Q80 Q80 Q100 r90
P100 P95 P100 P100 p85
e77.5 E88
F92

Я пытаюсь добавить код жирный отдельные массивы. Письмо должно идти в категории «Коды», слово должно идти в категориях, а число должно входить в категорию весов. Я попытался добавить первую часть к соответствующему массиву, но я не уверен, правильно ли я сделал это. Кроме того, я не уверен, как добавить вторую и третью части этих строк в правильный массив.

ответ

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]); 
     } 
    } 
+0

Спасибо! Часть для categoryCodes работает отлично, но вторая вторая печатается как [Ljava.lang.String; @ 7ea987ac и [D @ 7ea987ac. Как я могу это исправить? – me123

+0

@ me123 Чтобы просмотреть массивы, используйте это: 'System.out.println (Arrays.toString (categories));' сделать то же самое для 'categoryWeights' – Titus

0

Согласно моему пониманию , если параметр является: -

a Activities 0.05 

назначение должно быть как: -

categoryCodes[0] = 'a'; 
categories[0] = "Activities"; 
categoryWeights[0] = 0.05; 

теперь, если индекс 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.

Смежные вопросы