对于循环,如果内部不工作

Jan*_*Jan 1 java

我正在学习,我有问题,我应该从用户那里获得一个IP地址,然后从最右边的数字迭代它,如果那个数字将等于或大于256,那么我应该迭代数字-1的地方在此之前,这个设置为0.

我试图通过简单地创建原始代码来解决它,它只会通过用户输入执行一次,之后我会添加更多复杂性,如原始多次迭代,错误检查并将代码放入propper .java文件和类中.我知道使用ArrayList会更好,但我打算稍后添加ArrayList而不是simple Array.

任何人都可以告诉我为什么当我不试图迭代"我"时,带有条件的循环放在outofarraybound异常?

    for (i = 3; i >= 0; i--) {
        pomoc = zasobnikIPadresa[i];

        if (pomoc > 255) {              
            zasobnikIPadresa[i] = 0;
            zasobnikIPadresa[i-1] = pomoc + 1;
        }           
    }   
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够分析我没有适当的Arrays知识,我认为我的问题的解决方案将帮助我完成我的问题并更好地理解它们.

到目前为止这里是完整的代码:

    package com.ipadresa.classes;

    import java.util.Scanner;

    public class Hlavni {

    public static void main(String[] args) {

        int i = 0;

        int[] zasobnikIPadresa = new int[4];        
        Scanner ctecka = new Scanner(System.in);

        for (i = 0; i < zasobnikIPadresa.length; i++) {
            zasobnikIPadresa[i] = ctecka.nextInt();
        }

        System.out.print("Original IP adress: ");
        for (i = 0; i < zasobnikIPadresa.length; i++) {

            if (i < zasobnikIPadresa.length - 1) {
                System.out.print(zasobnikIPadresa[i] + ".");
            } else {
                System.out.print(zasobnikIPadresa[i]);
            }           
        }   System.out.println();


        int pomoc = 0;  

        for (i = 3; i >= 0; i--) {
            pomoc = zasobnikIPadresa[i];

            if (pomoc > 255) {              
                zasobnikIPadresa[i] = 0;
                zasobnikIPadresa[i-1] = pomoc + 1;
            }           
        }


        System.out.print("Final IP adress: ");
        for (i = 0; i < zasobnikIPadresa.length; i++) {

            if (i < zasobnikIPadresa.length - 1) {
                System.out.print(zasobnikIPadresa[i] + ".");
            } else {
                System.out.print(zasobnikIPadresa[i]);
            }           
        }       

        ctecka.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 6

由于这个for循环条件,允许for (i = 3; i >= 0; i--) {变量i== 0,然后让我们看看当i0为0 时数组索引在这里:

zasobnikIPadresa[i-1] = pomoc + 1;
Run Code Online (Sandbox Code Playgroud)

它是-1.哎哟.