Как создать новый массив каждый цикл цикла for - PullRequest
0 голосов
/ 20 ноября 2018

Здравствуйте, я смотрю, как создать новый массив и сохранить два значения, полученные от пользователя на каждой итерации цикла 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 голосов
/ 20 ноября 2018

(1) Использовать двумерный массив(2) Используйте 1 объект сканера

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]);
}
0 голосов
/ 20 ноября 2018

Вы можете использовать двумерный массив, в этом случае у вас будет массив размера 4, где каждый индекс будет содержать массив размера два. Затем вы можете использовать значение 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]));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...