Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    riempimento di array direttamente da input

    Ciao a tutti, sto facendo un programma che memorizza una sequenza di numeri li mette in un array e lo stampa a video, vi posto il codice:

    codice:
    import java.io.*;
    import java.util.*;
    
    class Array {
    	
    	public static void main(String[] args) {
    		
    		Scanner in = new Scanner(System.in);
    		
    		System.out.print("Inserire una sequenza di numeri: ");
    		System.out.println();
    		
    		int a[] = in.nextInt();
    		
    		for(int i = 0; i < a.length; i++) {
    			
    			System.out.println(a[i]);
    		}
    	}
    }
    in compilazione mi da questo errore:

    codice:
    Array.java:13: incompatible types
    found   : int
    required: int[]
    		int a[] = in.nextInt();
                                           ^
    volevo sapere come evitare questo errore grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Per evitare quell'errore bisognerebbe scrivere un codice che abbia senso.

    in.nextInt() consente di leggere un intero. Uno solo. E di conseguenza restituisce un valore di tipo int (e non int[]).

    Tu stai assegnando un intero ad un array di interi.

    Ti consiglio di consultare un manuale sulle basi della programmazione con Java o anche di seguire i tutorial della Sun sul sito perchè stai mescolando treni con pere.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ho risolto una parte del problema, cioè adesso riesco a far leggere l'input, ma ora non riesco a stampare il contenuto, o meglio stampa una sequenza di 0 pari al numero dei numeri inseriti:

    codice:
    import java.io.*;
    import java.util.*;
    
    class Array {
    	
    	public static void main(String[] args) {
    		
    		Scanner in = new Scanner(System.in);
    		
    		System.out.print("Inserire una sequenza di numeri: ");
    		System.out.println();
    		
    		int[] a = new int[in.nextInt()];
    		
    		for(int i = 0; i < a.length; i++) {
    			
    			System.out.println(a[i]);
    		}
    	}
    }


    output :

    codice:
    Inserire una sequenza di numeri: 
    5 6 8 9 10 44
    0
    0
    0
    0
    0

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Vedi il mio post precedente.

    Nel tuo secondo post stai semplicemente leggendo un intero e dicendo che hai un array di quella dimensione. Ovvero, leggi 10 e costruisci un array (vuoto!) che può contenere 10 numeri.

    E poi ne stampi il contenuto... ovvero tanti begli zeri essendo che quello è il valore di default per gli interi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Ci sono diversi modi per fare quello che vuoi...te ne suggerisco uno, tu prova ad implementarlo e se hai problemi lo vediamo insieme


    Inizialmente fai inserire la lunghezza della sequenza che vuoi inserire.

    Poi crei un array lungo quanto la sequenza che vuoi inserire.

    Poi fai un ciclo per quanti numeri vuoi inserire e a ogni interazione leggi il numero e lo memorizzi nella giusta posizione dell'array.

    Alla fine nell'array avrai memorizzata la sequenza e potrai quindi passare a stamparla...
    Jekkil

  6. #6
    grazie ho capito la tua idea e modificando il codice sono ruscito ad applicarla:

    codice:
    import java.io.*;
    import java.util.*;
    
    class Array {
    	
    	public static void main(String[] args) {
    		
    		Scanner in = new Scanner(System.in);
    		
    		System.out.print("Inserire la capacità dell'array: ");
    		System.out.println();
    						
           int n = in.nextInt();
           
           int[] a = new int[n];
           
           for (int i = 0; i < n; i++) {
    		   
    		   System.out.print("Dammi l'" + (i+1) +"-esimo  intero: ");
    		   
    		   a[i] = in.nextInt();
    	   }
    	   
    	    System.out.print("[ ");
            for (int i = 0; i < a.length; i++) {
    			
                System.out.print(a[i] +  " ");
            }
                
            System.out.println("]");
            
    	}
    }
    Ma volevo chiederti se è possibile fare un riempimento da input senza sapere a priori le dimensioni dell'array

    Grazie mille

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Be' con gli array no perchè per istanziare un array devi anche comunicarli la dimensione.
    E se non la sai a priori non puoi istanziarlo.

    Se vuoi creare una sequenza senza sapere a priori la dimensioni devi usare altre strutture dati come i Vector o gli ArrayList,

    In questo modo leggi un numero e lo inserisci e così via.
    E per terminare la sequenza devi prevedere un carattere speciale.

    Es. leggi e inserisci nell'arrayList finchè l'utente non inserisce il numero 0
    Jekkil

  8. #8
    ok grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.