[英]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.