无法从一种方法捕获返回值到另一种方法

时间:2013-09-22 10:17:21

标签: java oop return return-value

我目前正在用Java创建一个小应用程序。但是,我现在卡住了。我无法从一种方法捕获返回值到另一种方法。

以下是我返回值以及我想要捕获它的示例:

public int[] highest(int y[]){
    int largest = 500;
    int largeArr[] = new int[y.length];
    for(int count = 0; count < y.length; count++)
    {        
        if(y[count] >= largest){
            largeArr[count] = y[count];
            System.out.print(largeArr[count] + " ");  
        }
    }
    return largeArr;
}

public void highText()
{
    RandomNumbers high = new RandomNumbers();
    System.out.println("\nDessa tal är " + high.highest() + " intervallet 500 - 999: ");
}

我很清楚我应该利用参数和参数。但是当我想在以后打印文本时,这对我来说就成了一个问题

整个代码:

RandomNumbers rnd = new RandomNumbers();

        rnd.highText();
        rnd.highest(nummer);



import java.util.Scanner;

public class RandomNumbers {
        public void rnd(int y[]){
            for(int count = 0; count < y.length; count++)
            {
                y[count] = (int) ( Math.random()*1000);
                System.out.print(y[count] + " ");
            }
        }

        public int[] lowest(int y[]){
            int largest = 499;
            int smallArr[] = new int[y.length];
            for(int count = 0; count < y.length; count++)
            {    
                if(y[count] <= largest){
                    smallArr[count] = y[count];
                    System.out.print(smallArr[count] + " ");
                }
            }
            return smallArr;
        }

        public int[] highest(int y[]){
            int largest = 500;
            int largeArr[] = new int[y.length];
            for(int count = 0; count < y.length; count++)
            {        
                if(y[count] >= largest){
                    largeArr[count] = y[count];
                    System.out.print(largeArr[count] + " ");  
                }
            }
            return largeArr;
        }

        public void highText()
        {
            RandomNumbers high = new RandomNumbers();
            System.out.println("\nDessa tal är " + high.highest() + " intervallet 500 - 999: ");
        }
        public void lowText()
        {
            System.out.println("\nDessa " + smallArr + " tal är i intervallet 0 - 499: ");
        }

    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);

        System.out.print("Hur många slumptal i intervallet 0-999 önskas? ");
        int x = user_input.nextInt();
        int nummer[] = new int[x];

        RandomNumbers rnd = new RandomNumbers();

        System.out.println("\nHär är de slumpade talen: ");
        rnd.rnd(nummer);

        rnd.lowText();
        rnd.lowest(nummer);

        rnd.highText();
        rnd.highest(nummer);
     }

}

当我打印文本时,我使用方法rnd.highText();.如果我以前在参数中使用largeArr,那么程序请求参数 - 当我真的只想打印方法时:(

请帮助=)

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解你想要的东西但...... 如果你想从你已经计算过的方法旧值中写入,你必须将它保存到全局变量中,或者以其他方式从方法外部访问她。只是写出结果你有两个选择。你可以在调用方法null时传递参数,只需检查参数,如果为null,你可以编写旧结果(如果有的话)(你应该拥有它)。 所以电话会是:

rnd.highText(空);

改变的方法是:

 int largeArr[];
    public int[] highest(int y[]){
                if(y!=null)
                {
                    int largest = 500;
                    largeArr[] = new int[y.length];
                    for(int count = 0; count < y.length; count++)
                    {        
                        if(y[count] >= largest){
                            largeArr[count] = y[count];
                            System.out.print(largeArr[count] + " ");  
                        }
                    }
                }
                return largeArr;
            }

另一种实现此方法的方法是创建另一个不带非参数的方法(具有相同的名称)。但只需写出最高或最喜欢的元素的保存版本。在每种情况下,你需要将结果保存在一些变量中,因为现在在方法结束后你会丢失结果,并且无法将它返回到你调用方法agan的unles。我希望你明白我要告诉你的事情。