Java初学者 - 有人可以调试我的代码吗?

时间:2013-12-31 07:50:24

标签: java

import java.util.*;
import javax.swing.*;

public class Practice {

  public static void main(String[] args){
      int[] numbers = {1, 2, 3, 14, 15, 16, 17};
      getSmall(numbers);
  }

  public static void getSmall(int[] ar){
    int small=0;

    for(int i=0; i<ar.length; i++){

      if(ar[i]<small)

       small = ar[i];

    }
   System.out.println(small);
   }
}

该程序是在数组中找到最小的数字,没有编译器错误,但它没有显示正确的结果。 提前谢谢!

7 个答案:

答案 0 :(得分:3)

  public static void getSmall(int[] ar){
    int small=ar[0];

    for(int i=1; i<ar.length; i++){

      if(ar[i]<small)

       small = ar[i];

    }
   System.out.println(small);
   }

答案 1 :(得分:1)

最初将small设置为0是一个坏主意,因为您希望您的数组包含的元素少于答案的元素。

常见的习惯用法是将small初始化为ar[0](当然,首先检查ar是否包含至少1个元素)。然后从1开始循环。

for(int i = 1;

(我不喜欢将small初始化为非常大的数字,因为如果ar没有任何元素,那么将函数的答案置于未定义的状态。)

答案 2 :(得分:1)

更改

int small = 0

int small = ar[0];

答案 3 :(得分:1)

不要初始化小= 0, 更改为int small = ar[0]

答案 4 :(得分:1)

您也可以使用

int small=Integer.MAX_VALUE;

取代

int small=0;

答案 5 :(得分:1)

此代码将打印small值,给出最大整数

答案 6 :(得分:1)

更改此

public static void getSmall(int[] ar) {
    int small = 0;

    for (int i = 0; i < ar.length; i++) {
        if (ar[i] < small)
            small = ar[i];
    }
    System.out.println(small);
}    

public static void getSmall(int[] ar) {
    int small = ar[0];
    for (int i = 1; i < ar.length; i++) {
        if (ar[i] < small)
            small = ar[i];
    }
    System.out.println(small);
}

因为变量small未分配给数组中的任何值