在java中订购方法

时间:2016-11-26 02:39:51

标签: java

所以情况就是这样:我希望我的java输出向我显示某个数组中的相反顺序,同一数组中数字的总和,以及最大数字。但是,当我第一次尝试我的代码时,我插入了值1,2,3,4,5,6,7,8,9,10:

import java.util.*;
public class AssignSeven {
  public static void main(String[] args) {
    int [] array1=new int[10];
    System.out.println("Enter 10 numbers");
    Scanner sc=new Scanner(System.in);
    for (int i=0;
         i < 10;
         i++) {
      int a=sc.nextInt();
      array1[i]=a;
    }
    sc.close();
    printReverse(array1);
    computeTotal(array1);
    getLargest(array1);
  }
  static void printReverse(int[] array1) {
    for (int i=0;
         i < array1.length / 2;
         i++) {
      int temp=array1[i];
      array1[i]=array1[array1.length - 1 - i];
      array1[array1.length - 1 - i]=temp;
    }
    System.out.println("The numbers in reverse order is: " + Arrays.toString(array1));
  }
  static void computeTotal(int[] array1) {
    int total=0;
    for (int j=0;
         j < array1.length;
         j++) {
      total=total + array1[j];
    }
    System.out.println("The sum of these numbers is: " + total);
  }
  static void getLargest(int[] array1) {
    int c;
    int d=0;
    for (c=0;
         c < 9;
         c++) {
      if (array1[c] < array1[c+1]) {
        d=array1[c+1];
      }
      else {
        d=array1[c];
      }
    }
    System.out.println("The highest value is: " + d);
  }
}

结果显示为:

The numbers in reverse order is: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

The sum of these numbers is: 55

The highest value is: 2

当然,最后一部分是错误的,而它应该是10而不是2.但是,当我按此顺序设置方法调用时

computeTotal(array1);
getLargest(array1);
printReverse(array1);

结果显示正确的答案。但是,我希望printReverse方法先行。有办法处理这个吗?谢谢!

3 个答案:

答案 0 :(得分:2)

你得到的最大计算是不正确的。您需要迭代数组并检查数组中特定索引处的值是否大于目前为止找到的最大值。

Task<int>

我选择d为第一个值而不是零的原因是,如果数组中的所有值都为负,则保持d的初始值等于零将最大值计算为0。

答案 1 :(得分:0)

else for循环中的getLargest()语句导致问题:

else {
     d = array1[c];
}

d应保留数组中的最大值。没有else语句的正确代码是:

static void getLargest ( int[] array1){
    int c;
    int d = 0;
    for (c = 0;
         c < 9;
         c++) {
        if (array1[c] < array1[c + 1]) {
            d = array1[c + 1];
        }
    }
    System.out.println("The highest value is: " + d);
}

答案 2 :(得分:0)

我知道这个问题已经回答了,但我想提供一个替代解决方案。首先,我强烈建议使用naming convention

  

变量名称应该简短而有意义。选择一个   变量名应该是助记符 - 即设计用于指示   随意的观察者使用它的意图。

此外,还有ternary conditional operator,它基本上是if-then-else的快捷方式,并且非常适合这种情况:

    result = someCondition ? value1 : value2;

如果为真,则会设置value1,否则会将value2设置为result变量。

getLargest:

static void getLargest ( int [ ] array1 )
    {
        int high = array1[0];
        for ( int current : array1 )
        {
            high = current > high ? current : high; 
        }
        System.out.println ( "The highest value is: " + high );
    }

正如您所看到的,您的方法和身体目的非常清楚。

输出:

最后一次测试。

Enter 10 numbers
1
2
3
4
5
6
7
8
9
10
The numbers in reverse order is: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
The sum of these numbers is: 55
The highest value is: 10