首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在For循环中初始化变量(Java)

在For循环中初始化变量(Java)
EN

Stack Overflow用户
提问于 2018-10-03 07:14:13
回答 3查看 705关注 0票数 0

我需要创建一个程序,从用户接受4个整数,并确保输入是否在0和255之间的独占。除了我的最终输出之外,一切都正常,IP地址几乎是一个字符串中的所有输入。它一直输出0,因为在数组中使用变量之前,我必须对变量进行初始化,所以我给它们赋值为0。但是,这个值应该在for循环中更改,但它仍然打印出不正确的值。我只能打印一次IP地址,而且它必须在末尾。我知道有一种更简单的方法可以做到这一点,但我仍然想知道如何修复这个问题,以供将来参考。以下是我的代码:

导入java.util.Scanner;

类Main {

代码语言:javascript
复制
public static void main(String[] args) {
    Scanner run = new Scanner(System.in);
    String per = ".";
    int firstInput = 0;
    int secondInput = 0;
    int thirdInput = 0;
    int fourthInput = 0;
    boolean firstMeetsParameters = true;
    boolean secondMeetsParameters = true;
    boolean thirdMeetsParameters = true;
    boolean fourthMeetsParameters = true;
    int[] inputs = new int[] {firstInput,secondInput,thirdInput,fourthInput};
    boolean[] condition = new boolean[] {firstMeetsParameters,secondMeetsParameters,thirdMeetsParameters,fourthMeetsParameters};
    String[] num = new String[] {"first", "second", "third", "fourth"};
    for(int x = 0; x < inputs.length; x++) {
        System.out.println("Please enter the " + num[x] + " octet:");
        inputs[x] = run.nextInt();
        if(inputs[x] < 0 || inputs[x] > 255) {
            condition[x] = false;
        }
    }
    for(int i = 0; i < inputs.length; i++){
        if(condition[i] == false) {
            System.out.println("Octet " + (i+1) + " is incorrect.");
        }        
    }
    System.out.println("IP Address: " + firstInput + per + secondInput + per + thirdInput + per + fourthInput);    
}

}

EN

回答 3

Stack Overflow用户

发布于 2018-10-03 07:30:53

运行这段代码,并得到启发:

代码语言:javascript
复制
int x = 0;
int[] a = new int[] {x};
x = 1;
System.out.println(a[0]); // What do you think.. does this print 0 or 1?
a[0] = 2;
System.out.println(x); // What do you think.. does this print 1 or 2?

一旦您理解了新的int[] {x};没有将x和数组a的第一个槽“链接”在一起,并且上面的新int[] {x};与新的int[] { 0 }没有什么不同,您应该能够找出它不工作的原因:您将用户输入赋值到inputs[]数组的4个槽中,并且根本不接触firstInput变量,直到您打印它,此时它显然仍然是您创建它时的状态:0。

票数 0
EN

Stack Overflow用户

发布于 2018-10-03 07:33:39

您从不设置firstInput、secondInput等的值。

如果您将输出语句更改为以下语句,则可以正常工作。

代码语言:javascript
复制
System.out.println("IP Address: " + inputs[0] + per + inputs[1] + per + inputs[2] + per + inputs[3]);
票数 0
EN

Stack Overflow用户

发布于 2018-10-03 07:36:38

问题出在变量引用上。您正在设置输入数组中的值,但是打印变量firstInput、secondInput...因为它们是本机类型,所以它们之间没有引用。您应该像这样使用inputs数组进行打印:

代码语言:javascript
复制
System.out.println("IP Address: " + inputs[0] + per + inputs[1] + per + inputs[2] + per + inputs[3]);

在输入上设置的值不会更改firstInput变量上的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52617637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档