访问不同类中的数组列表

时间:2016-11-01 20:10:32

标签: java arrays

由于这是对我的第一个问题的再次攻击,我将首先重申我是一个java新手。我本周也在尝试通过大学级别的java作业。告诫这一点,让我说我几乎不知道自己在做什么。在得到澄清后的本周作业;就是这样:

  

您需要为此项目编写一个实际的ClassClient:

     
      
  1. 声明并初始化您的数据数组
  2.   
  3. 创建一个SortingClass对象,
  4.   
  5. 打印数据数组(未排序)
  6.   
  7. 将数组发送到SortingClass的构造函数(对数组的内容进行排序)
  8.   
  9. 打印相同的数据数组(现已排序)
  10.   

截至目前,我正在逐步完成它。目前,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;
    }
}

4 个答案:

答案 0 :(得分:1)

你的第一个问题是这个

  

将数组发送到SortingClass的构造函数(对数组的内容进行排序)

转换为:您无法在整个地方使用静态

你需要像

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

含义:您创建该类的实例,并将引用传递给该类。

作为首发,您可能希望学习this等内容。

答案 1 :(得分:0)

public static void ClientClass (double [] array ) {}这个方法采用了一系列名为&#34; array&#34;的双精度数。作为一个论点。当你尝试并引用&#34; array1&#34;在这个方法中,它不知道你在说什么,因为在范围中没有创建这样的变量。

如果您将此public static void ClientClass (double [] array ) {}更改为此public static void ClientClass (double [] array1 ) {},则该方法将了解每次引用&#34; array1&#34;时,您所说的是您传入的数组作为方法参数。

答案 2 :(得分:0)

只要SortingClass中的方法保持静态,就足以从主类中调用它。不需要通过&#34; new&#34;:

来实例化SortingClass
SortingClass.ClientClass( array1);
BTW1:良好的命名可以保护您和其他人免受头痛。例如。方法(&#34; ClientClass&#34;)首先以低位字母开头,其次,名称表明它是一个类,但它是一个执行排序的(void)方法。你最好认为方法是动词,而类/实例是名词。

BTW2:您的主要方法 - 如果您想将其作为Java应用程序启动 - 应该采用String数组而不是双数组。

答案 3 :(得分:0)

谢谢大家。最初的错误问题已经解决,我的第一堂课正在运作。对于我的第二堂课(SortingClass),它不是,我相信我需要完全重做它。我现在要开始研究它了。再次感谢。