2013-04-03 4 views
11

Pytam użytkownika, aby wprowadzić liczby od 1 do 100 i przypisać je do tablicy. Rozmiar tablicy nie jest inicjowany, ponieważ zależy od tego, ile razy użytkownik wprowadza numer. Jak powinienem przypisać długość tablicy? Jeśli użytkownik wchodzi 5 6 7 8 9 (5 numerów), a następnieJava: jak zainicjować rozmiar tablicy, jeśli jest nieznany?

int[] list; 

staje

int[] list = new int[5]; 

Próbuję użyć pętli, ale to nie zatrzyma.

int[] integers; 
int j = 0; 
do { 
     integers = new int[j + 1]; 
     integers[j] = in.nextInt(); 
     j++;  
} while((integers[j-1] >= 1) ||(integers[j-1]) <= 100); 

Odpowiedz

17

Powinieneś użyć List czegoś takiego, a nie tablicy. Zgodnie z ogólną zasadą, gdy nie wiesz, ile elementów dodasz do tablicy przed rozdaniem, użyj zamiast tego List. Większość prawdopodobnie poradziłaby sobie z tym problemem za pomocą ArrayList.

Jeśli naprawdę nie możesz użyć List, prawdopodobnie będziesz musiał użyć tablicy o pewnym rozmiarze początkowym (może 10?) I śledzić pojemność swojej tablicy w porównaniu do liczby dodawanych elementów, oraz skopiuj elementy do nowej, większej tablicy, jeśli zabraknie Ci miejsca (jest to w zasadzie to, co wewnętrznie wykonuje ArrayList). Zauważ też, że w rzeczywistym świecie nigdy nie robiłbyś tego w ten sposób - używałbyś jednej ze standardowych klas, które zostały stworzone specjalnie dla takich przypadków, jak na przykład ArrayList.

+0

Nie dowiedzieliśmy się, jak nam arraylist .. –

+1

Nigdy nie za późno, aby zacząć :-) – arshajii

+1

Jeśli nie możesz użyć tablicyList, co muszę zrobić? – delive

1

Zgadzam się, że struktura danych jak lista jest najlepszym sposobem, aby przejść:

List<Integer> values = new ArrayList<Integer>(); 
Scanner in = new Scanner(System.in); 
int value; 
int numValues = 0; 
do { 
    value = in.nextInt(); 
    values.add(value); 
} while (value >= 1) && (value <= 100); 

Albo można po prostu przydzielić tablicę max wielkości i obciążenia wartości do niego:

int maxValues = 100; 
int [] values = new int[maxValues]; 
Scanner in = new Scanner(System.in); 
int value; 
int numValues = 0; 
do { 
    value = in.nextInt(); 
    values[numValues++] = value; 
} while (value >= 1) && (value <= 100) && (numValues < maxValues); 
2

Myślę, że potrzebujesz w tym celu użyć Listy lub klas.

Na przykład

ArrayList<Integer> integers = new ArrayList<Integer>(); 
int j; 

do{ 
    integers.add(int.nextInt()); 
    j++; 
}while((integers.get(j-1) >= 1) || (integers.get(j-1) <= 100)); 

mogliście przeczytać this article uzyskania więcej informacji na temat sposobu wykorzystania.

0

Jeśli chcesz trzymać tablicę, możesz w ten sposób skorzystać. Ale to nie jest dobre w porównaniu do listy i nie jest zalecane. Jednak rozwiąże on twój problem.

import java.util.Scanner; 

public class ArrayModify { 

    public static void main(String[] args) { 
     int[] list; 
     String st; 
     String[] stNew; 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter Numbers: "); // If user enters 5 6 7 8 9 
     st = scan.nextLine(); 
     stNew = st.split("\\s+"); 
     list = new int[stNew.length]; // Sets array size to 5 

     for (int i = 0; i < stNew.length; i++){ 
      list[i] = Integer.parseInt(stNew[i]); 
      System.out.println("You Enterred: " + list[i]); 
     } 
    } 
} 
0
int i,largest = 0; 
Scanner scan = new Scanner(System.in); 
System.out.println("Enter the number of numbers in the list"); 
i = scan.nextInt(); 
int arr[] = new int[i]; 
System.out.println("Enter the list of numbers:"); 
for(int j=0;j<i;j++){ 
    arr[j] = scan.nextInt(); 
} 

Powyższy kod działa dobrze. Podjąłem dane wejściowe liczby elementów na liście i odpowiednio zainicjowałem tablicę.

+0

Proszę wyjaśnić, w jaki sposób ten kod odpowiada na pytanie. – JAL

+0

'największy' nigdy nie jest używany. Ponadto, poproś o liczbę elementów, a następnie poproś o podanie listy elementów i przeanalizuj tę listę za pomocą 'nextInt', zamiast dostarczania listy elementów i chwytania całej linii (i określania długości samej linii) z 'nextLine'? – Ironcache

Powiązane problemy