我的方法有什么问题?

时间:2015-11-02 21:49:02

标签: java arrays methods

我对Java完全陌生,所以原谅我对其中一些人是个白痴。我应该写一个静态方法isStrictlyIncreasing(double[] in),如果给定数组中的每个值都大于它之前的值,则返回true,否则返回false。另外,我无法使用java.util.ArrayList

这是我的代码:

public static void main(String[] args) {

    double in[] = new double[]{45, 15, 25, 79, 89, 45, 66, 33, 56, 105};
    Sort(in);
    System.out.println("Answer: " + Sort(in));
}

private static boolean Sort(double[] in) {
    int n = in.length;
    int temp = 0;    
    for(int i = 0; i < n; i++){
        for(int j = 1; j < (n-i); j++){
            if(in[j - 1] < in[j]){
                return true;
            }
            return false;
        }
    }

不幸的是,我只是不断得到一个&#34;真实,真实,真实的清单...答案:false&#34;

我知道我的方法有问题,可能在if语句中,并且想知道是否有人可以帮助我。

3 个答案:

答案 0 :(得分:3)

首先,在Java中,camelCase方法名称的常见做法。也就是说,

private static boolean Sort(double[] in) {

应该成为

private static boolean sort(double[] in) {

其次,返回语句用于从方法返回,因此您可能不希望在每次检查后返回。相反,你会想做类似的事情,

private static boolean Sort(double[] in) {
    int n = in.length;
    int temp = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 1; j < (n - i); j++) {
            if (in[j - 1] > in[j]) {
                return false;
            }
        }
    }
    return true;
}

如果序列中的下一个数字不大于它之前的值,那么它将返回false。然后,如果它通过for循环而不被触发,那么我们知道它们必须按升序排列,因此返回true

答案 1 :(得分:1)

不要只需要检查之前的值吗?一旦您的情况得不到满,您就会返回假。否则它将返回真实。

   public static void main(String[] args) {

        double in[] = new double[]{45, 15, 25, 79, 89, 45, 66, 33, 56, 105};
        Sort(in);
        System.out.println("Answer: " + Sort(in));
    }

    private static boolean Sort(double[] in) {
        int n = in.length;
        int temp = 0;    
        for(int i = 1; i < n; i++){
           if(in[i - 1] < in[i])
              return false;
        }
        return true;
  }

答案 2 :(得分:1)

你不需要双循环,因为你只检查连续值。

private static boolean Sort(double[] in) {
        int n = in.length;

        for(int i = 1; i < n-1; i++){
                if(in[i - 1] < in[i]){
                    return true;
                }

            }
        return false;
        }