2015-04-16 26 views
0
import java.io.*; 
import java.util.*; 


public class Marks { 
    public static void main(String[] args) { 
    Marks r = new Marks(); 
    double[] finalArray = r.openFile(); 
    double[] finalArray2 = r.openFile2(); 


} 
//ID's and first set of grades 

private Scanner a; 

public double[] openFile() { 
    ArrayList<String> list1 = new ArrayList<String>(7); 
    try { 
     a = new Scanner(new File("IR101.txt")); 
    } catch (Exception e) { 
     System.out.println("could not find file"); 
    } 
    while (a.hasNextLine()) { 
     list1.add(a.nextLine()); 

    } 

    String[] arrayOne = list1.toArray(new String[list1.size()]); 
    Arrays.sort(arrayOne); 
    //System.out.println(Arrays.toString(arrayOne)); 
    int size = arrayOne.length; 
    double[] finalArray = new double[size]; 
    for (int j = 0; j < size; j++) { 
     String word = arrayOne[j]; 
     String newWord = word.substring(6, 10); 
     double grade = Double.parseDouble(newWord); 
     finalArray[j] = grade; 

    }return finalArray; 



} 
//ID's and second set of grades 


private Scanner b; 

public double[] openFile2() { 
    ArrayList<String> list2 = new ArrayList<String>(7); 
    try { 
     b = new Scanner(new File("IR102.txt")); 
    } catch (Exception e) { 
     System.out.println("could not find file"); 
    } 
    while (b.hasNextLine()) { 
     list2.add(b.nextLine()); 
    } 
    String[] arrayTwo = list2.toArray(new String[list2.size()]); 
    Arrays.sort(arrayTwo); 
    //System.out.println(Arrays.toString(arrayTwo)); 
    int size = arrayTwo.length; 
    double[] finalArray2 = new double[size]; 
    for (int j = 0; j < size; j++) { 
     String word = arrayTwo[j]; 
     String newWord = word.substring(6, 10); 
     double grade2 = Double.parseDouble(newWord); 
     finalArray2[j] = grade2; 
    }return finalArray2; 

} 



// ID's and names 

private Scanner c; 

public void openFile3() { 
    ArrayList<String> list3 = new ArrayList<String>(7); 
    try { 
     c = new Scanner(new File("IRStudents.txt")); 
    } catch (Exception e) { 
     System.out.println("could not find file"); 
    } 
    while (c.hasNextLine()) { 
     list3.add(c.nextLine()); 
    } 
    String[] arrayThree = list3.toArray(new String[list3.size()]); 
    Arrays.sort(arrayThree); 
    //System.out.println(Arrays.toString(arrayThree)); 
    int size = arrayThree.length; 

    String[] names = new String[size]; 
    for (int j = 0; j < size; j++) { 
     names[j] = arrayThree[j].substring(6); 
    } 
    String[] IDs = new String[size]; 
    for (int x = 0; x < size; x++){ 
     IDs[x] = arrayThree[x].substring(0,5); 
    } 
    System.out.println(Arrays.toString(names)); 
    System.out.println(Arrays.toString(IDs)); 

} 
public void calculateAvg() { 


} 

} 

我想訪問finalArray和finalArray2中的數字,但我不知道如何做到這一點,當我嘗試調用兩個數組不工作我認爲這是與數組的範圍有關。那麼如何使整個程序可以訪問這兩個數組。我想創建一個方法,計算兩個數組中的數字的平均值

+3

'它沒有work'並不像它告訴我們幾乎一無所知的說明問題的好辦法實際問題在眼前。請儘可能具體,並添加儘可能多的細節,以便描述錯誤是什麼。 – tnw

+1

看起來你在添加這個問題之前還沒有做過多的研究。但你對範圍是正確的。目前設置它的方式不會工作,除非你將數組傳遞給函數。您需要決定是否要傳遞和返回,或者只是將範圍更改爲靜態。 – happyHelper

+0

你在哪裏試圖訪問它,爲什麼?你能提供一個你正在嘗試實現的例子嗎?謝謝 – TejjD

回答

1

如果你想兩個數組整個節目訪問,宣佈他們的主要方法之外爲靜態變量和初始化裏面就像在這裏看到:

public class Marks { 
     static double[] finalArray; 
     static double[] finalArray2; 
    public static void main(String[] args) { 
     Marks r = new Marks(); 
     finalArray = r.openFile(); 
     finalArray2 = r.openFile2(); 
+0

請修復您的縮進,以便清楚什麼級別。 –

0

雖然可以使陣列可見整個班級,將它們傳遞給應該訪問它們的方法可能更有意義。所以,做這樣的事情:

public void calculateAvg(double[] array1, double[] array2) { 
    // ... 
} 

然後你可以這樣調用:

public static void main(String[] args) { 
    Marks r = new Marks(); 
    double[] finalArray = r.openFile(); 
    double[] finalArray2 = r.openFile2(); 
    r.calculateAvg(finalArray, finalArray2); 
} 
相關問題