我想要一个长度为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]);
}
}
}
型
2条答案
按热度按时间3pmvbmvn1#
我不确定我是否理解,但我会试着解释。如果我看起来太具体了,我很抱歉,但话说回来,我认为我没有正确理解你的问题。也很抱歉,每一个其他程序员阅读这本LOL,我会写一个非常明显和简化的答案。
input.nextInt()
是一个method
,其中returns
是一个Integer
,它是运行程序时在console
中输入的数字。让我们继续每一行你
main()
:字符串
这一行创建了
Scanner
的一个新示例,它的设计是为了帮助阅读System.in
。这是您在运行程序时在控制台中键入的内容。型
此行在控制台上打印作为参数传递的字符串。
型
最后,在这一行中,您首先使用
declare
一个名为inside
的int
变量,然后使用=
,使用input.nextInt()
的return value
方法初始化此变量。您的程序将等待,直到您在控制台中输入一个数字。然后该方法将返回您键入的数字,该数字将被分配给您的inside
变量假设您在控制台中输入了
5
:现在inside
等于5
。型
这一行将声明并初始化一个
int array
5 long。这意味着它可以包含5个不同的值。下面是一个数组的图形表示:将数组看作一组
boxes
。一个框可以包含一个值,每个框的编号从0
到length - 1
。在这种情况下是4
,因为5-1=4
。型
这是一个
for
循环。括号内的代码将运行与数组的length
一样多的次数,在本例中为5次。for循环还包含一个只存在于循环内部的临时变量。该变量是一个int
。它的初始值是0。这个变量在循环的每一个repeat
上都会增加one
。型
这一行将为数组的一个框设置一个新值。此外,这一行将被执行五次。正如我前面所说的,这个for循环包含一个从零开始每次重复都递增的变量。假设我们在第一次重复中。当你调用
型
您选择了索引为
j
的框,该框现在为零。在array[j]
之后有一个=
,这意味着您正在为此框设置一个新值。该新值为input.nextInt()
。现在请注意:
当您再次运行
input.nextInt()
时,您并不是在尝试获取之前在int inside = input.nextInt();
行中输入的值,而是在向用户请求另一个值,该值需要在控制台中输入。因此,如果您第一次输入
5
作为数组的长度,input.nextInt()
将从用户处获得一个新值,并且只有当用户再次输入该值时,您才会获得5
作为方法的返回值。如果您希望在数组的每个框中设置数组的长度,您将需要以下内容:型
其中
inside
是您之前声明的变量。在循环的下一次重复中,使用当前代码,您将向用户询问
4
个更多值。剩下的代码只是输出,所以我不必解释。
我希望这一切都没有白费,哈哈。
vaj7vani2#
当我设置
array[j]
等于input.nextInt();时,input.nextInt()
;发生了什么?字符串
将输入的值赋给数组上的位置。此代码可以正常工作:
型
x1c 0d1x的数据