Java 为什么可以';在一个类之外的方法中,我不是一个数组吗?

Java 为什么可以';在一个类之外的方法中,我不是一个数组吗?,java,arrays,sorting,methods,syntax,Java,Arrays,Sorting,Methods,Syntax,我已经创建了数组,在它的类之外,我创建了一个方法来对数组进行排序。它一直说找不到我创建的数组的变量名。当我采用该方法并将其与数组放在同一个类中时,它可以工作,但它违背了我试图实现的目的,帮助吗 /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Syste

我已经创建了数组,在它的类之外,我创建了一个方法来对数组进行排序。它一直说找不到我创建的数组的变量名。当我采用该方法并将其与数组放在同一个类中时,它可以工作,但它违背了我试图实现的目的,帮助吗

/**
 * @param args the command line arguments
 */
    public static void main(String[] args) {
        // TODO code application logic here

        System.out.println("Enter a length for the array: ");
        Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();

        int randomNumbers[] = new int[x];

        for (int index = 0; index < randomNumbers.length; index++)

        {
            randomNumbers[index] = (int) (Math.random() * 100);
        }

        for (int index = 0; index < randomNumbers.length; index++)

        {
            System.out.println(randomNumbers[index]);
        }

    }

    static void sortAscending()

    {
        Arrays.sort(randomNumbers);

        for (int i = 1; i < randomNumbers.length; i++) {
            System.out.println("Number: " + randomNumbers[i]);
        }
    }  
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
System.out.println(“为数组输入长度:”);
扫描仪扫描=新扫描仪(System.in);
int x=scan.nextInt();
整数随机数[]=新整数[x];
for(int index=0;index
由于
随机数
是在
main
方法中声明的,因此其他方法无法访问它。有几种方法可以从其他方法访问阵列,例如:

  • 作为参数传递给方法:

    static void sortAscending(int[] randomNumbers) {
        //...
    }
    
    然后像这样调用
    sortAscending
    callfrom
    main

    sortAscending(randomNumbers);
    
  • 通过字段传递值。但是,我不会使用静态字段,因为所有实例中只有一个字段。但您可以使用类的实例并将值存储在非静态字段中:

    publc class MyClass {
    
        // declare randomNumbers as field
        private int[] randomNumbers;
    
        public static void main(String[] args) {
            MyClass o = new MyClass();
            o.localMain(args);
    
            // you could call sortAscending here like this
            o.sortAscending();
        }
    
        // you don't really need to pass args, since you don't use it
        public void localMain(String[] args) {
            // TODO code application logic here
    
            System.out.println("Enter a length for the array: ");
            Scanner scan = new Scanner(System.in);
            int x = scan.nextInt();
    
            // assing new value to field
            randomNumbers = new int[x];
    
            for (int index = 0; index < randomNumbers.length; index++)
            {
                randomNumbers[index] = (int) (Math.random() * 100);
            }
    
            for (int index = 0; index < randomNumbers.length; index++)
            {
                System.out.println(randomNumbers[index]);
            }
    
        }
    
        void sortAscending()
        {
            Arrays.sort(randomNumbers);
    
            for (int i = 1; i < randomNumbers.length; i++) {
                System.out.println("Number: " + randomNumbers[i]);
            }
        }  
    
    }
    
    public类MyClass{
    //将随机数声明为字段
    私人整数【】随机数;
    公共静态void main(字符串[]args){
    MyClass o=新的MyClass();
    o、 localMain(args);
    //你可以这样叫巫术表演
    o、 排序();
    }
    //您实际上不需要传递args,因为您不使用它
    public void localMain(字符串[]args){
    //此处的TODO代码应用程序逻辑
    System.out.println(“为数组输入长度:”);
    扫描仪扫描=新扫描仪(System.in);
    int x=scan.nextInt();
    //将新值分配给字段
    随机数=新整数[x];
    for(int index=0;index

  • 随机数
    作为方法参数传递。如果您需要返回排序的
    数组
    而不仅仅是打印内容,请返回它。我正在处理一个问题,要求我编写一个排序和一个降序的方法,我已经创建了它们,但是如何返回数组而不是打印。糟糕的代码格式。如果你想有人帮你解决问题,请努力正确提问(格式化等)。回答得好,谢谢!!