如何在for循环的每个循环中创建一个新数组

时间:2018-11-19 21:36:29

标签: java arrays for-loop java.util.scanner

您好,我正在研究如何创建新数组并存储每次for循环迭代时从用户获得的两个值。因为它从1-4开始,所以我想创建4个数组,并且每次附加用户在该迭代中提供的值。如果最好创建一个存储所有值的大数组,请分享,但是我想保持代码简单。下面的示例显示了我的代码,数组部分是当前存在问题的部分。

import java.util.Scanner;

public class Arrays{

public static void main(String args[])

String array1[];
String array2[];
String array3[];
String array4[];

for (int i=1; i <5; i++) {

    System.out.println("What is track " + i);
    Scanner sc = new Scanner(System.in);
    String track = sc.nextLine();
    System.out.println("How many thousands of times has it been downloaded? ");
    Scanner sd = new Scanner(System.in);
    String time = sd.nextLine();
    array1[0]=track;
    array1[1]=time;

}
System.out.println(arrays1);
System.out.println(arrays2);
System.out.println(arrays3);
System.out.println(arrays4);
}

2 个答案:

答案 0 :(得分:0)

您可以使用二维数组,在这种情况下,您将拥有一个大小为4的数组,其中每个索引将保存一个大小为2的数组。然后,您可以在i循环中使用for的值来访问外部数组。我还建议仅使用1个扫描仪,并将其放在循环之外,因为无需为for循环的每次迭代创建新的扫描仪。您还应避免将整数值硬编码到代码中,而应使用变量,因为这些值以后可能会发生变化。例如,如果要从用户那里获取6组值,则必须遍历代码并手动更改所有4个条目,而不是仅为此使用变量并更改变量值。

import java.util.Scanner;
import java.util.Arrays;

public class Arrays1{

  public static void main(String args[]){

    String[][] array = new String[4][2];
    Scanner sc = new Scanner(System.in);

    for (int i = 0; i < 4; i++) {

        System.out.println("What is track " + i + 1);
        array[i][0] = sc.nextLine();
        System.out.println("How many thousands of times has it been downloaded? ");
        array[i][1] = sc.nextLine();
    }

    sc.close();

    // More elegant to loop here and print these values instead of hardcoding the indices
    System.out.println(Arrays.toString(array[0]));
    System.out.println(Arrays.toString(array[1]));
    System.out.println(Arrays.toString(array[2]));
    System.out.println(Arrays.toString(array[3]));
  }
}

答案 1 :(得分:0)

(1)使用二维数组
 (2)使用1个Scanner对象

String[][] array = new String[4][2];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < array.length; i++) {
    System.out.println("What is track " + (i + 1));
    array[i][0] = sc.nextLine();
    System.out.println("How many thousands of times has it been downloaded? ");
    array[i][1] = sc.nextLine();
}
sc.close();

for (int i = 0; i < array.length; i++) {
    System.out.print("track" + (i + 1) + " = " + array[i][0]);
    System.out.println(", downloaded = " + array[i][1]);
}