Domanda

Mi chiedevo se ci fosse un modo per rimuovere il valore "0" di default che provo quando corro il seguente codice:

Scanner scan = new Scanner(System.in);

int [] x = new int[4];
for ( int i = 1; i < x.length; i++ )
{
    System.out.println( "Enter number " + i + ": ");
    x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));
}

L'uscita è il seguente

[0, i[1], i[2], i[3]]

Naturalmente, tutti i valori di matrice qui sono in realtà i numeri inseriti nella console. Il codice funziona. Si ordina con successo tutti i numeri nell'ordine corretto, tuttavia, c'è sempre questo brutto 0.

Non sto cercando di rimuovere tutti i 0 di (voglio l'utente sia in grado di entrare 0 e lo hanno mostra aggiornamenti) -? -Non solo che non voglio il default 0. Tutte le idee

È stato utile?

Soluzione

Quando si alloca un array di dimensione 4, stai assegnando quattro interi: i [0], i [1], i [2], e [3]. Poiché Java è abbastanza gentile, pone tutti e quattro di questi per 0. Quindi quello che stai vedendo in uscita è [i[0],i[1],i[2],i[3]] (in modo ordinato). L'ordinamento non aggiunge lo 0, era già lì. Se si desidera solo 3 numeri, allora si dovrebbe assegnare un int [3], piuttosto che un int [4]. E poi, per andare insieme a quella, quando si chiede il numero 1, riporlo in I [0]. Il cambiamento più semplice per farlo sarebbe quello di cambiare semplicemente la linea superiore a

 int [] x = new int[3];

e la linea in seguito al

 x[i-1] = scan.nextInt();

La modifica suggerita da altre risposte è il più comune, uno, però. La maggior parte dei programmatori avrebbero vado da 0 a 2 e poi l'uscita i + 1 quando si parla per l'utente.

Altri suggerimenti

indici di array in Java sono basati su 0, non 1-based. Così l'iterazione iniziare da 0 anziché da 1 e si dovrebbe essere buono:

for ( int i = 0; i < x.length; i++ )

for (int i = 0 ; i

Il seguente codice dovrebbe funzionare:

Scanner scan = new Scanner(System.in);

int[] x = new int[3];
for (int i = 0; i < x.length; i++)
{
  System.out.println( "Enter number " + i + ": ");
  x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));

Il problema era, come altri hanno fatto notare, che il vostro int dovrei iniziare a 0, non 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top