我试图找到一种方法,通过使用增强的For循环从扫描仪输入为数组赋值。但我没有看到我能做到的方法。
在下面的代码中,我声明了一个getInput()方法,它循环遍历数组并从扫描仪输入中分配数字。但是在增强For循环的情况下我不能真正使用这样的东西 -
For(int i: baseData){
//basedata[i]=scanner.nextInt()}
因为baseData数组在迭代时不会返回任何值,所以我想如何迭代scan.nextInt()并在数组中赋值,但scanner .nextInt()不是数组。 那么这个问题的简单解决方案是什么呢?
package com.ksk;
import java.util.Scanner;
public class Main {
private static Scanner scanner = new Scanner(System.in);
private static int[] baseData = new int[4];
public static void main(String[] args) {
System.out.println("Enter 4 numbers here");
getInput();
printInput();
}
static void getInput() {
for (int i = 0; i < baseData.length; i++) {
baseData[i] = scanner.nextInt();
}
}
static void printInput() {
for (int i : baseData) {
System.out.println(i);
}
}
}
答案 0 :(得分:1)
for-each
循环隐藏迭代器,因此您无法使用一个更新数组(至少在没有添加新计数器/迭代器的情况下)。相反,假设您使用的是Java 8+,则可以使用IntStream
编写Scanner
生成器。像,
private static int[] baseData = IntStream.generate(() -> scanner.nextInt())
.limit(4).toArray();
然而,这只是一个例子,在现实生活中我更喜欢用意外输入更宽容的代码。
答案 1 :(得分:0)
试试这样。
import java.util.Scanner;
import java.util.stream.IntStream;
public class Main {
private static Scanner scanner = new Scanner(System.in);
private static int[] baseData = IntStream.generate(() -> scanner.nextInt())
.limit(4).toArray();
public static void main(String[] args) {
System.out.println("Enter 4 numbers here");
printInput();
}
static void printInput() {
for (int i : baseData) {
System.out.println(i);
}
}
}
OR
import java.util.Scanner;
public class Main {
private static Scanner scanner = new Scanner(System.in);
private static int[] baseData = new int[4];
public static void main(String[] args) {
System.out.println("Enter 4 numbers here");
getInput();
printInput();
}
static void getInput() {
int position =0;
for(int i:baseData){
baseData[position] = scanner.nextInt();
position++;
}
}
static void printInput() {
for (int i : baseData) {
System.out.println(i);
}
}
}