java 扫描器输入到For循环

pcww981p  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(127)

我想要一个长度为4的数组。对于第一个for循环,我设置array[j]等于input.nextInt();
当我设置array[j]等于input.nextInt();时,input.nextInt();会发生什么?
我问这个问题是因为我认为如果我用scanner方法声明数组的长度,它会等于4,但我肯定漏掉了什么,因为它不等于4。
当我直接将array[j]设置为4时,我不能添加值,我得到:

Even 4
Even 4
Even 4
Even 4

字符串
这是否将每个可索引值设置为4?
当我通过扫描器声明数组长度时,我可以添加值,并得到:

odd 1
Even 2
odd 3
Even 4


总结一下这个问题,为什么for循环中的input.nextInt();不等于4,它到底等于什么?
下面是我的代码:

package com.company;

import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("enter array length");
        int inside = input.nextInt();
        int[] array = new int[inside];

        System.out.println("enter values");
        for (int j = 0; j < array.length; j++) {
            array[j] = input.nextInt();
        }

        for (int i = 0; i < array.length; i++)
            if (array[i] % 2 == 0) {
                System.out.println("Even" + " " + array[i]);
            } else {
                System.out.println("odd" + " " + array[i]);
            }
    }
}

3pmvbmvn

3pmvbmvn1#

我不确定我是否理解,但我会试着解释。如果我看起来太具体了,我很抱歉,但话说回来,我认为我没有正确理解你的问题。也很抱歉,每一个其他程序员阅读这本LOL,我会写一个非常明显和简化的答案。
input.nextInt()是一个method,其中returns是一个Integer,它是运行程序时在console中输入的数字。
让我们继续每一行你main()

Scanner input = new Scanner(System.in);

字符串
这一行创建了Scanner的一个新示例,它的设计是为了帮助阅读System.in。这是您在运行程序时在控制台中键入的内容。

System.out.println("enter array length");


此行在控制台上打印作为参数传递的字符串。

int inside = input.nextInt();


最后,在这一行中,您首先使用declare一个名为insideint变量,然后使用=,使用input.nextInt()return value方法初始化此变量。您的程序将等待,直到您在控制台中输入一个数字。然后该方法将返回您键入的数字,该数字将被分配给您的inside变量
假设您在控制台中输入了5:现在inside等于5

int[] array = new int[inside];


这一行将声明并初始化一个int array 5 long。这意味着它可以包含5个不同的值。下面是一个数组的图形表示:

将数组看作一组boxes。一个框可以包含一个值,每个框的编号从0length - 1。在这种情况下是4,因为5-1=4

for (int j = 0; j < array.length; j++) {
    // some code here
}


这是一个for循环。括号内的代码将运行与数组的length一样多的次数,在本例中为5次。for循环还包含一个只存在于循环内部的临时变量。该变量是一个int。它的初始值是0。这个变量在循环的每一个repeat上都会增加one

array[j] = input.nextInt();


这一行将为数组的一个框设置一个新值。此外,这一行将被执行五次。正如我前面所说的,这个for循环包含一个从零开始每次重复都递增的变量。假设我们在第一次重复中。当你调用

array[j]


您选择了索引为j的框,该框现在为零。在array[j]之后有一个=,这意味着您正在为此框设置一个新值。该新值为input.nextInt()。现在

请注意:

当您再次运行input.nextInt()时,您并不是在尝试获取之前在int inside = input.nextInt();行中输入的值,而是在向用户请求另一个值,该值需要在控制台中输入。
因此,如果您第一次输入5作为数组的长度,input.nextInt()将从用户处获得一个新值,并且只有当用户再次输入该值时,您才会获得5作为方法的返回值。如果您希望在数组的每个框中设置数组的长度,您将需要以下内容:

array[j] = inside;


其中inside是您之前声明的变量。
在循环的下一次重复中,使用当前代码,您将向用户询问4个更多值。
剩下的代码只是输出,所以我不必解释。
我希望这一切都没有白费,哈哈。

vaj7vani

vaj7vani2#

当我设置array[j]等于input.nextInt();时,input.nextInt();发生了什么?

array[j] = input.nextInt();

字符串
将输入的值赋给数组上的位置。此代码可以正常工作:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("enter array length");
        int inside = input.nextInt();
        int[] array = new int[inside];
        System.out.println("enter values");
        for (int j = 0; j < array.length; j++) {
            array[j] = input.nextInt();
        }
        for (int i = 0; i < array.length; i++)
            if (array[i] % 2 == 0) {
                System.out.println("Even" + " " + array[i]);
            } else {
                System.out.println("odd" + " " + array[i]);
            }
    }
}


x1c 0d1x的数据

相关问题