2014-11-05 9 views
2

Я уже несколько часов пытался найти решение.Создать массив для целых чисел в Java?

Моя программа просит пользователя ввести список целых чисел (пример: 5 2 5 6 6 1). Затем я хотел бы создать массив и сохранить каждое целое число в его соответствующий индекс массива, последовательно.

Вот часть моей программы у меня возникают проблемы с (эта программа должна была выполнять вычисления с помощью метода позже, но я не включил это):

import java.util.Scanner; 
public class Assignment627 { 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    int x = 0; 
    int[] list1Array = new int[1]; 

    System.out.println("Enter list1: "); 
    while (input.hasNext()){ 
     list1Array[x] = input.nextInt(); 
     x++; 
    } 

Как вы можете см., я создаю массив «list1Array», но проблема в том, что я не знаю, сколько целых чисел вводит пользователь! Если бы только был способ узнать, сколько целых чисел было введено ... Любая помощь будет принята с благодарностью! Спасибо, Sebastian

+3

использование 'ArrayList 'вместо int [] – Jens

+0

' int [] list1Array = new int [1]; 'не будет работать. Используйте «Список list1Array = новый список ();'. Он создаст пустой список для вас, где вы можете добавить к нему данные на основе индекса. Читайте о List в Java. – ha9u63ar

+2

@hagubear вы имеете в виду 'Список list = new ArrayList ();', ваш ответ ** C# ** – EpicPandaForce

ответ

1
public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter elemnt size "); 
     int size = input.nextInt(); 

     int x = 0; 
     int[] list1Array = new int[size]; 

     for (int y = 0 ; y < size ; y++) { 
      System.out.println("Enter number"); 
      list1Array[x] = input.nextInt(); 
      x++; 
     } 

     System.out.println(Arrays.toString(list1Array)); 
    } 

Выход

Enter elemnt size 
4 
Enter number 
2 
Enter number 
3 
Enter number 
4 
Enter number 
2 
[2, 3, 4, 2] 
1

Использование List, в вашем случае ArrayList будет хорошо:

List<Integer> list1Array = new ArrayList(); 

while (input.hasNext()){ 
    list1Array.add(input.nextInt()); 
    x++; 
} 
5
import java.util.Scanner; 
public class Assignment627 { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     //int[] list1Array = new int[1]; 
     List<Integer> list1Array = new ArrayList<>(); 

     System.out.println("Enter list1: "); 
     while (input.hasNext()){ 
      list1Array.add(input.nextInt()); 
     } 
    } 

} 

ArrayList, подобен а rray, который не имеет предопределенного размера и динамически изменяет его размер; именно то, что вы ищете. Вы можете получить его размер на list1Array.size();

Если вы настаиваете на том, чтобы конечный результат был массивом, вы можете позже позвонить toArray() method of ArrayList. This post будет полезен.

1

Вы должны принять ввод как строку, а затем использовать string.split (""); а затем получить массив строк, представляющих каждое число. Получение массива по строкам может выполняться с помощью токенизации строк.

UPDATE

Но вы должны быть осторожны, чтобы не поставить другие символы в качестве разделителей для ряда чисел

+0

Мне понравился ваш ответ, но немного отредактирован. И голосуйте. :) –

2

Если вы действительно хотите использовать Arrays, сделать это следующим образом:

import java.util.Scanner; 

public class Assignment627 { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     int x = 0; 
     int[] list1Array = new int[1]; 

     System.out.println("Enter list1: "); 
     while (input.hasNext()) { 
      list1Array[x] = input.nextInt(); 
      x++; 
      int[] temp = new int[list1Array.length + 1]; 

      for (int i = 0; i < list1Array.length; i++) { 
       temp[i] = list1Array[i]; 
      } 

      list1Array = temp; 
     } 
    } 
} 
Смежные вопросы