[英]Access array list in a different class
由於這是對我的第一個問題的重新攻擊,因此我將從重申我是Java新手開始。 我也在本周嘗試完成大學級別的Java作業。 為了說明這一點,讓我說我幾乎不知道自己在做什么。 澄清后,本周的作業; 簡直是這樣:
您需要為此項目編寫一個實際的ClassClient:
- 聲明並初始化您的數據數組
- 創建一個SortingClass對象,
- 打印數據數組(未排序)
- 將數組發送到SortingClass的構造函數(對數組的內容進行排序)
- 打印相同的數據數組(現已排序)
到目前為止,我正在逐步解決它。 當前,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.