簡體   English   中英

訪問不同類中的數組列表

[英]Access array list in a different class

由於這是對我的第一個問題的重新攻擊,因此我將從重申我是Java新手開始。 我也在本周嘗試完成大學級別的Java作業。 為了說明這一點,讓我說我幾乎不知道自己在做什么。 澄清后,本周的作業; 簡直是這樣:

您需要為此項目編寫一個實際的ClassClient:

  1. 聲明並初始化您的數據數組
  2. 創建一個SortingClass對象,
  3. 打印數據數組(未排序)
  4. 將數組發送到SortingClass的構造函數(對數組的內容進行排序)
  5. 打印相同的數據數組(現已排序)

到目前為止,我正在逐步解決它。 當前,NetBeans給我的唯一錯誤是在我的第二個類中,凡是使用array1的地方都帶有下划線,並且我認為這意味着它們沒有鏈接到放置數組列表的第一個類。 我的第一個問題是,我的鏈接顯然不正確; 我想念什么? 我也在使用選擇排序方法。

我的第一堂課叫做ClientClass

public class ClientClass {

    public static void main( double [] array ) {

        double array1[] =
        {53.5, 60.3, 96.2, 53.3, 56.4, 52.7, 76.4, 77.5, 71.0, 78.2,
        65.2, 59.3, 80.5, 92.1, 85.7, 78.7, 66.2, 88.8, 50.2, 73.4};

        //Create a SortingClass variable with data gievn in the array
        SortingClass g = new SortingClass();

        // Print array unsorted
        for (double number : array1) 
        {
        System.out.println("Number = " + number);
        }

        String outPutString = g.toString();
        System.out.println(outPutString);
    }

}

我已經寫了第二節課

public class SortingClass {

    // Selection Sort
    public static void ClientClass (double [] array )
    {
        double temp;
        int max;

        // Selection Sort Method
        for (int i = 0; i < array1.length - 1; i ++)
        {
            max = indexOfLargestElement ( array1, array1.length - i );

            temp = array1[max];
            array1[max] = array1[array1.length - i - 1];
            array1[array1.length - i - 1] = temp;
        }
    }

    public static int indexOfLargestElement ( double[] array1, int size)
    {
        int index = 0;
        for ( int i = 1; i < size; i++ )
        {
            if ( array1[i] > array1[index] )
                index = i;
        }
        return index;
    }
}

您的第一個問題是

將數組發送到SortingClass的構造函數(對數組的內容進行排序)

轉換為:您不能在所有地方都使用static

你需要類似的東西

public class SortingClass {
  private final double data[];
  public SortingClass(double data[])  {
    this.data = data;
  }
  public void sort() {
    ... would sort on this.data

含義:創建該類的實例,然后將對該數組的引用傳遞給該類。

作為首發,你想學習的東西像這樣

public static void ClientClass (double [] array ) {}此方法將一個名為“ array”的雙精度數組作為參數。 當您嘗試在此方法中引用“ array1”時,它不知道您在說什么,因為在范圍內沒有創建此類變量。

如果將此public static void ClientClass (double [] array ) {}更改為此public static void ClientClass (double [] array1 ) {}該方法將理解為每次引用“ array1”時,您都在談論數組您作為方法參數傳入。

只要SortingClass中的方法保持靜態,就足以從主類中調用它。 無需通過“新”實例化SortingClass:

SortingClass.ClientClass( array1);

BTW1:好的命名可以使您和其他人免受頭痛。 例如,方法(“ ClientClass”)首先以小寫字母開頭,其次,名稱表明它是一個類,但它是執行排序的(無效)方法。 您最好認為方法是動詞,而類/實例是名詞。

BTW2:您的主要方法-如果要作為Java應用程序啟動它-應該采用String數組而不是double數組。

感謝大家。 最初的錯誤問題已解決,我的第一堂課正在工作。 對於我的第二堂課(SortingClass),不是,我相信我需要完全重做。 我現在要開始研究它。 再次感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM