【问题标题】:Exceptions (Java)异常 (Java)
【发布时间】:2014-08-01 16:44:11
【问题描述】:

好吧,我一直在尝试这个练习,因为我不擅长异常。所以这里是练习的上下文:用 main 方法编写一个类(以下代码由任务给出):

public class task{

public static void main(
String[] args)
{
int[] array = new int[10];
// initialise array
int result =task.min(array); 
// Where the class task
// contains the min method
}

所以我被要求确保该方法有效 即使数组只包含一个元素或根本不包含任何元素。因此,对于上面给出的代码,我必须使用异常来处理所有可能弹出的错误。

这就是我所做的:

public static void main(String[] args){
int[] array = new int[10];
        array[0]=5;
        array[1]=7;

        int result =Exercise1.min(array); 
        if(array.length<=0){
            throw new IllegalArgumentException("empty array");
        }
        else if(array.length<10 && array.length>0){
            throw new IllegalArgumentException("I got just these numbers");
        }
            System.out.println(result);


            }
    public static int min(int[] array) {
        int min = array[0]; 
          for(int i=1;i<array.length;i++){  
                 if(array[i]< min){  
                 min = array[i];  
                    }  
          }
        return min;
    }
}

但是无论我写什么输出总是0,我不明白为什么。如果我的方法完全错误,请提供一些建议。

【问题讨论】:

  • 您的异常应该在min 方法中,并且您必须在main 方法中处理它们。除此之外,您的代码应该按预期工作。可能你在执行代码时遇到了问题,你得到了最后一次有效执行的结果,它打印了 0。
  • if(array[i]&lt; min){min = array[i]; } 这使得 min 总是设置为最小值,因为 array[2-9] = 0, min 返回 0
  • 如果声明为 int[10],您的数组的长度将始终为 10。它不会调整大小。

标签: java arrays custom-exceptions


【解决方案1】:

int[] array = new int[10];

这行代码设置了array“数组”的10个位置,都等于“0”。

为了使min 不返回 0,您需要设置数组的所有值或将大小更改为 2。

使用此功能可以轻松设置它们:

for(int i = 0; i < array.length; i++){
    array[i] = i + 1;
}

这将设置数组的所有值,因此您可以删除此代码:

array[0]=5;
array[1]=7;

设置这些将固定您的最小值始终为 0。

如果您使用我建议的循环,它将始终为 1。

【讨论】:

    【解决方案2】:

    当您创建一个 int 数组时,它们都设置为零,因此这是您的数组中的最小值。

    【讨论】:

      【解决方案3】:

      如果您可以更改输入:

      ArrayList<Integer> array = new ArrayList<Integer>();
      array.add(5);
      [...]
      

      或者你可以改变你的条件,假设你的数组中没有 0 值。

      for(int i=1;i<array.length && array[i]!=0;i++){  
        if(array[i]< min){  
          min = array[i];  
        }  
      }
      

      这将解决您当前的问题,因此您可以专注于您的异常实践

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 2013-09-12
        • 2015-04-02
        • 2011-05-01
        • 2012-10-02
        • 2013-04-04
        • 1970-01-01
        相关资源
        最近更新 更多