+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Array di Stringhe

  1. #1
    Luogo
    Veneto
    Post
    6

    Array di Stringhe

    Sto cercando di prendere in input un array di stringhe ma sono attanagliato dal seguente errore:

    codice:
    Quante stringhe vuoi inserire(max 100): 5
    Scrivi: Scrivi: a
    Scrivi: b
    Scrivi: c
    Scrivi: d
    -----------------
    Indice uno: 1
    Indice due: 5
    -----------------
    Output: d
    Output: a
    Output: b
    Output: c
    Output:
    Mi viene stampato due volte di seguito il primo "Scrivi: ". Di seguito il codice del programma: Dato un vettore di stringhe, scambiare due locazioni dell'array, dati gli indici.

    codice:
    import java.util.Scanner;
    
    public class Esercizio11 {
    
    	public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    
    		
    		
    		System.out.print("Quante stringhe vuoi inserire(max 100): ");
    		int n = in.nextInt();
    		
    		String[] arrayString = new String[n];
    		
    		for (int i = 0; i < n; i++) {
    			System.out.print("Scrivi: ");
    			arrayString[i] = in.nextLine();
    		}
    		System.out.println("-----------------");
    
    		System.out.print("Indice uno: ");
    		int index1 = in.nextInt();
    
    		System.out.print("Indice due: ");
    		int index2 = in.nextInt();
    
    		scambia(arrayString, index1, index2);
    		stampa(arrayString, n);
    		
    	}
    
    	private static void scambia(String[] arrayString, int index1, int index2) {
    
    		String tempString;
    
    		tempString = arrayString[index1-1];
    		arrayString[index1-1] = arrayString[index2-1];
    		arrayString[index2-1] = tempString;
    
    		
    	}
    
    	private static void stampa(String[] arrayString, int n) {
    
    		System.out.println("-----------------");
    		for (int i=0; i<n; i++) {
    			System.out.println("Output: " + arrayString[i]);
    		}
    		
    	}
    
    }
    Esposito Vittorio

  2. #2
    minomic non è in linea Scolaretto
    Post
    133
    Ciao, sono un po' in ritardo ma ho visto ora il thread...

    Il problema è ben noto: fai una nextLine dopo una nextInt. Il problema è che la nextInt lascia l'ultimo carattere di endline, che viene poi "preso" dalla successiva nextLine, causando così quel comportamento. La soluzione è molto semplice: leggere sempre con la nextLine e poi convertire in numero.
    MB: AsRock H77 Pro4/MVP | CPU: Intel i5-3470 @3.2GHz | GPU: AMD Radeon HD7770 | PSU: Corsair TX550M | RAM: 8GB Corsair Vengeance Blue LP 1600MHz | SSD: Crucial RealSSD M4 128GB | HDD WD Caviar Blue 500GB 7200rpm | OS Win 7 Ultimate x64 - Debian 8.0 jessie

  3. #3
    Luogo
    Veneto
    Post
    6

    Talking Grazie mille

    Quote Originariamente inviato da minomic Visualizza il messaggio
    Ciao, sono un po' in ritardo ma ho visto ora il thread...

    Il problema è ben noto: fai una nextLine dopo una nextInt. Il problema è che la nextInt lascia l'ultimo carattere di endline, che viene poi "preso" dalla successiva nextLine, causando così quel comportamento. La soluzione è molto semplice: leggere sempre con la nextLine e poi convertire in numero.
    Grazie molte per l'aiuto
    Esposito Vittorio

  4. #4
    minomic non è in linea Scolaretto
    Post
    133
    Prego! Se hai altri dubbi, scrivi pure.
    MB: AsRock H77 Pro4/MVP | CPU: Intel i5-3470 @3.2GHz | GPU: AMD Radeon HD7770 | PSU: Corsair TX550M | RAM: 8GB Corsair Vengeance Blue LP 1600MHz | SSD: Crucial RealSSD M4 128GB | HDD WD Caviar Blue 500GB 7200rpm | OS Win 7 Ultimate x64 - Debian 8.0 jessie

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi