如何处理数组超出绑定的异常

时间:2016-05-25 10:10:18

标签: java arrays exception exception-handling indexoutofboundsexception

我正在编写获得2个字符串的函数。 每个字符串代表某种东西的版本。

例如:

String var1 =“1.1.1”;

String var2 =“1.1.2”;

并返回哪个字符串是较新的版本。

我的代码:

   public  void main(String var1, String var2) {

    String[] arrayA = var1.split("\\.");

    String[] arrayB = var2.split("\\.");

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

            Integer number1 = Integer.parseInt(arrayA[i]);

            Integer number2 = Integer.parseInt(arrayB[i]);

            if (number1.equals(number2)) {

                textView.setText("arrays equal");

            } else if (number1 > number2) {

                textView.setText("array A newer version");

                break;

            } else if (number2 > number1) {

                textView.setText("array B newer version");

                break;
            }  
    }

到现在为止一切正常。

当数组具有不同的长度

时,我的问题就开始了

(我总是在更短的时间内露营更长的阵容)

如果我露营var1 =“2.3”;到var2 =“3.3.3”;我得到了正确的答案。

但如果我露营var1 =“2.3”;到var2 =“2.3.1”;

我总是“平等”。

有任何建议如何处理吗?

3 个答案:

答案 0 :(得分:0)

请试试这个:

public  void main(String var1, String var2) {

    String[] arrayA = var1.split("\\.");

    String[] arrayB = var2.split("\\.");
    int length = 0;
    if (arrayA.length > arrayB.length) {
        length = arrayA.length;
    } else {
        length = arrayB.length;
    }
    int check = 0;
    for (int i = 0; i < length; i++) {
        Integer number1 = 0, number2 = 0;
        if (arrayA.length > i) {
            number1 = Integer.parseInt(arrayA[i]);
        }
        if (arrayB.length > i) {
            number2 = Integer.parseInt(arrayB[i]);
        }
        if (number1.equals(number2)) {
            check = 0;
        } else if (number1 > number2) {
            check = 1;
            break;

        } else if (number2 > number1) {
            check = 2;
            break;
        }
    }
    switch (check) {
    case 0:
        System.out.println("arrays equal");
        break;
    case 1:
        System.out.println("array A newer version");
        break;
    case 2:
        System.out.println("array B newer version");
        break;
    }

}

答案 1 :(得分:0)

URL oracle = new URL(urlString);
URLConnection yc = oracle.openConnection();
BufferedImage bufferedImage = ImageIO.read(yc.getInputStream());
int rowsData = bufferedImage.getWidth()/8;
System.out.println(rowsData);
byte[] pixel = ((DataBufferByte)bufferedImage.getRaster().getDataBuffer()).getData();
System.out.println(pixel.length);
System.out.println(Hex.encodeHex(pixel, false));

答案 2 :(得分:0)

您可以将vars添加到列表中,并使用java.util.Collections中的sort方法,它将为您进行比较。实施例

public static void main(String var1, String var2){ 

    List<String> varList = new ArrayList<String>();
    varList.add(var1); 
    varList.add(var2); 

    java.util.Collections.sort(varList);
    System.out.println("designation of newer version is: " + varList.get(1));
}