【问题标题】:Assign new value to an Array using Enhanced For Loop使用增强的 For 循环为数组分配新值
【发布时间】:2018-03-03 07:04:04
【问题描述】:

我正在尝试找到一种方法,通过使用增强的 For 循环从扫描仪输入为数组分配值。但我没有办法做到这一点。

在下面的代码中,我声明了一个 getInput() 方法,该方法循环遍历数组并从扫描仪输入中分配数字。但是在增强的 For 循环的情况下,我真的不能使用这样的东西 -

For(int i: baseData){
//basedata[i]=scanner.nextInt()}

因为 baseData 数组在迭代时不会返回任何值,所以我想如何遍历scanner.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);
    }
}

}

【问题讨论】:

  • 为什么要使用增强的for循环来赋值?
  • 实际上这段代码是有效的。你想做什么
  • 我知道这段代码有效。请参阅我是一名初学者 Java 程序员。我错误地认为增强的 for 循环可以替代所有场景的常规 for 循环。这就是为什么我想知道是否有一种使用增强型 For 循环的简单方法。

标签: java arrays for-loop


【解决方案1】:

for-each 循环隐藏迭代器,因此您将无法使用一个更新数组(至少在不添加新计数器/迭代器的情况下不能)。相反,假设您使用的是 Java 8+,您可以使用您的 Scanner 编写一个 IntStream 生成器。比如,

private static int[] baseData = IntStream.generate(() -> scanner.nextInt())
        .limit(4).toArray();

然而,这只是一个例子,在现实生活中,我更喜欢对意外输入更加宽容的代码。

【讨论】:

  • @Econ_newbie:在这里,如果答案可以帮助您解决问题,您可能希望将其标记为答案。这就是感恩在此适用的方式。
【解决方案2】:

像这样试试。

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);
    }
}

}

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);
    }
}

}

【讨论】:

    猜你喜欢
    • 2016-10-31
    • 2016-07-06
    • 2020-11-22
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多