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

    Problema con il richiamo dei metodi

    Salve ragazzi

    essendo alle prime armi non ho ben capito come richiamare i metodi nel main. In pratica, ho creato un file.java chiamato studenti1 in cui ho messo i vari metodi che mi servono e un file main.java dove richiamo i metodi prima citati

    solo che mi da errori sulle variabili, dice: nome_variabili cannot be resolved
    questo è il file studenti1.java

    codice:
    public class studenti1 {
      
    	  private static String nome[];
    	  private static String cognome[];
    	  private static int matricola[];
    	  private static int voto[];
    	  private static int NumeroStudenti = 3;
      
    	public  studenti1 (String nome[], String cognome[], int matricola[], int voto[], char sesso[]) {
    		this.nome = nome;
    		this.cognome = cognome;
    		this.matricola = matricola;
    		this.voto = voto;
    		
    		
    	}
    	
    	public static void inserimento(String nome[], String cognome[], int voto[], int matricola[]) {
    		
    		nome = new String [NumeroStudenti];
    		cognome=new String[NumeroStudenti];
    		matricola=new int[NumeroStudenti];
    		voto=new int[NumeroStudenti];
    		
    		
    		for(int i=0 ; i<NumeroStudenti ; i++){ 
    		
    		System.out.print("inserisce nome: ");
    		nome [i]=Input.readString();
    		System.out.print("inserisci cognome: ");
    		cognome [i]=Input.readString();
    		System.out.print("inserisci matricola: ");
    		matricola [i] = Input.readInt();
    		System.out.print("inserisci voto: ");
    		voto [i] = Input.readInt();
    		System.out.print("inserisci sesso: ");
    		
    		} 
    		}
    		
    		public void ordinamento (String nome[], String cognome[], int voto[], int matricola[]){
    		
    			
    			
    		for(int x=0; x<voto.length; x++){
                for(int y=0; y<voto.length; y++){
                    if(voto[x]>voto[y]){
                        
                    	int app=voto[x];
                        voto[x]=voto[y];
                        voto[y]=app;
                        String scambia=nome[x];
                        nome[x]=nome[y];
                        nome[y]=scambia;
                        scambia=cognome[x];
                        cognome[x]=cognome[y];
                        cognome[y]=scambia;
                        app=matricola[x];
                        matricola[x]=matricola[y];
                        matricola[y]=app;
                        
                        
                    }
                }
            }
    
    		}
    		public static void stampa(String nome[], String cognome[], int voto[], int matricola[]){
    		for(int i=0 ; i<NumeroStudenti ; i++){ 
    		System.out.print(nome[i]);
    		System.out.print(cognome[i]);
    		System.out.print(matricola[i]);
    		System.out.println(voto[i]);
    	
    		}
    	}
    	
    	public static void media(int[] voto){
    		int somma = 0;
    		int media=0;
    		for (int i=0; i<NumeroStudenti; i++ ){
    			somma = voto[i] + somma;
    			System.out.println("La media voti dell'esame e':");
    			System.out.print(media);
    	}
    		media=somma/NumeroStudenti;
    		
    	}
    	}

    questa è il file main.java:

    codice:
    public class main {
       public static void main1(String[] args){ 
    	   
    	   studenti1.inserimento(nome, cognome, voto, matricola);
    	   studenti1.media(nome,cognome, voto, matricola);
    	   studenti1.stampa(nome, cognome, voto, matricola);
    
    	
    
    }
    }





    questo è il file input.java, ma serve solo per la funzione di inserimento

    codice:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.util.Vector;
    
    
    public class Input{
        
        private static BufferedReader reader = 
    	new BufferedReader(new InputStreamReader(System.in));
        
        public static String readString(){  
    	String inputLine = "";
    	try{  
    	    inputLine = reader.readLine();
    	}
    	catch(IOException e){  
    	    System.out.println(e);
    	    System.exit(1);
    	}
    	return inputLine;
        }
        
        public static String readString(String msg){ 
    	System.out.print(msg); 
    	String inputLine = readString();
    	return inputLine;
        }
     
        public static byte readByte(){  
    	String inputString = readString();
    	inputString = inputString.trim();
    	byte n = Byte.parseByte(inputString);
    	return n;
        }
       
        public static byte readByte(String msg){  
    	System.out.print(msg); 
    	byte n = readByte();
    	return n;
        }
       
        public static short readShort(){  
    	String inputString = readString();
    	inputString = inputString.trim();
    	short n = Short.parseShort(inputString);
    	return n;
        }
       
        public static short readShort(String msg){  
    	System.out.print(msg); 
    	short n = readShort();
    	return n;
        }
    
        public static int readInt(){  
    	String inputString = readString();
    	inputString = inputString.trim();
    	int n = Integer.parseInt(inputString);
    	return n;
        }
       
        public static int readInt(String msg){  
    	System.out.print(msg); 
    	int n = readInt();
    	return n;
        }
       
     
        public static long readLong(){  
    	String inputString = readString();
    	inputString = inputString.trim();
    	long n = Long.parseLong(inputString);
    	return n;
        }
       
        public static long readLong(String msg){  
    	System.out.print(msg); 
    	long n = readLong();
    	return n;
        }
       
        public static double readDouble(){  
    	String inputString = readString();
    	inputString = inputString.trim();
    	double x = Double.parseDouble(inputString);
    	return x;
        }
    
        public static double readDouble(String msg){  
    	System.out.print(msg); 
    	double x = readDouble();
    	return x;
        }
    
        public static char readChar(){  
    	String inputString = readString();
    	char c = inputString.charAt(0);
    	return c;
        }
    
        public static char readChar(String msg){  
    	System.out.print(msg); 
    	char c = readChar();
    	return c;
        }
    
        public static boolean readBool(){  
    	String inputString = readString();
    	inputString = inputString.trim();
    	boolean b = Boolean.parseBoolean(inputString);
    	return b;
        }
    
        public static boolean readBool(String msg){  
    	System.out.print(msg); 
    	boolean b = readBool();
    	return b;
        }
        
        public static String[] readSeq(){ 
    	String[] seq = readSeq("");
    	return seq;
        }
    
        public static String[] readSeq(String prompt){ 
    	Vector<String> seqTemp = new Vector<String>(); 
    	System.out.print(prompt);
    	String inputString = readString();
    	while (inputString.length()>0) {
    	    seqTemp.add(inputString);
    	    System.out.print(prompt);
    	    inputString = readString();
    	}
    	String[] seq = new String[seqTemp.size()];
    	return seqTemp.toArray(seq);
        }
    
        public static String[] readSeq(String msg, String prompt){ 
    	System.out.println(msg); 
    	String[] seq = readSeq(prompt);
    	return seq;
        }
    
    }

    Grazie in anticipo per l'aiuto!

  2. #2
    i parametri che passi nei metodi invocati nel main (nome, cognome, voto, matricola) sono sconosciuti alla classe.

    inoltre, il metodo della classe Main dovrebbe a sua volta chiamarsi main, se lo vuoi indicare come metodo principale, anziche main1

  3. #3
    Originariamente inviato da Naruto 92
    i parametri che passi nei metodi invocati nel main (nome, cognome, voto, matricola) sono sconosciuti alla classe.

    inoltre, il metodo della classe Main dovrebbe a sua volta chiamarsi main, se lo vuoi indicare come metodo principale, anziche main1
    come faccio a far capire alla classe main che i prarametri (nome, cognome, voto, matricola) sono esattamente quei parametri che uso in studenti1?

  4. #4
    o te li dichiari pubblici e statici, e quindi fai studenti1.nome, ecc..., oppure ti crei dei metodi get statici che te li ritornano, e quindi fai studenti1.getNome(), ecc...

  5. #5
    quindi devo fare così per studenti1 ?

    public class studenti1 {

    public static String nome[];
    public static String cognome[];
    public static int matricola[];
    public static int voto[];
    public static int NumeroStudenti = 3;


    poi nel file main.java, per richiamare ad esempio il metodo inserimento, devo scrivere una cosa del genere?

    programmazione2.inserimento(String nome[], String cognome[], int voto[], int matricola[]);

    me lo suggerisce stesso eclipse di scrivere così, solo che mi da un sacco di errori

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Consiglio di consultare un manuale di base della programmazione Java, altrimenti ti troverai sempre a cozzare contro un iceberg.

    In quel modo dichiari degli array di oggetti String, non delle variabili (oggetti) String.

    Se a te serve una stringa:

    codice:
    String miaStringa;
    Se ti serve un array di stringhe (ovvero, un elenco di stringhe):

    codice:
    String miaStringa[];
    
    o equivalente, ma migliore:
    
    String[] miaStringa;
    Ripeto: studia su un libro, manuale, tutorial o corso. Nel modo in cui stai procedendo non arriverai mai da nessuna parte. Per poter programmare, con qualunque linguaggio (e Java, essendo Object Oriented non è propriamente tra i più semplici), è necessario conoscerne la sintassi e i costrutti di base.


    PS: abbandona Eclipse e qualunque altro ide di tipo RAD (usa il blocco note e il prompt dei comandi): già sei in difficoltà con queste cose, aggiungere difficoltà mi sembra eccessivo. (è un consiglio).


    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

  7. #7
    Hai ragionissima leleFT. Purtroppo io non frequento un corso di laurea in Informatica, ma provengo da statistica. In teoria avremmo dovuto fare programmazione java, ma in realtà non abbiamo fatto un cazzo e ora (cioè per venerdì 4) vuole questo programma.
    In realtà la programmazione java mi interessa molto, altrimenti avrei potuto consegnargli 2 righe in pseudocodice e l'avrei passato comunque, solo che ci tengo moltissimo a prendere un buon voto. Quindi al più presto il manuale ecc ecc lo studierò sicuramente.

    Ora tento di rompervi le scatole per l'ultima volta =)

    Dunque.
    Non mi da più errori. Pensavo funzionasse e invece quando inserisco il primo nome mi riporta il seguente errore:

    Exception in thread "main" java.lang.NullPointerException
    at studenti1.inserimento(studenti1.java:29)
    at main.main(main.java:5)


    i codici sono questi:

    studenti1.java

    codice:
    public class studenti1 {
    	  
    	  public static String nome[]; 
    	  public static String cognome[];
    	  public static int matricola[];
    	  public static int voto[];
    	  public static int NumeroStudenti = 3;
    	  
    	  public  studenti1 (String[] nome, String []cognome, int []matricola, int []voto) {
    			this.nome = nome;
    			this.cognome = cognome;
    			this.matricola = matricola;
    			this.voto = voto;
    	  }	
    			
    	  public static void inserimento(String nome[], String cognome[], int voto[], int matricola[]) {
    		
    		for(int i=0 ; i<NumeroStudenti ; i++){ 
    		nome [i] = Input.readString("Inserire il nome dello studente:");
    		cognome [i] = Input.readString("Inserire il Cognome dello studente:");
    		matricola [i] = Input.readInt("Inserie la matricola dello studente:");
    		voto [i] = Input.readInt("Inserire il Voto riportato nella prova:");
    		
    		
    		} 
    		}
    		
    		public void ordinamento (String nome[], String cognome[], int voto[], int matricola[]){
    		
    			for(int x=0; x<voto.length; x++){
                for(int y=0; y<voto.length; y++){
                    if(voto[x]>voto[y]){
                        
                    	int app=voto[x];
                        voto[x]=voto[y];
                        voto[y]=app;
                        String scambia=nome[x];
                        nome[x]=nome[y];
                        nome[y]=scambia;
                        scambia=cognome[x];
                        cognome[x]=cognome[y];
                        cognome[y]=scambia;
                        app=matricola[x];
                        matricola[x]=matricola[y];
                        matricola[y]=app;
                        
                        
                    }
                }
            }
    
    		}
    		public static void stampa(String nome[], String cognome[], int voto[], int matricola[]){
    		for(int i=0 ; i<NumeroStudenti ; i++){ 
    		System.out.print(nome[i]);
    		System.out.print(cognome[i]);
    		System.out.print(matricola[i]);
    		System.out.println(voto[i]);
    	
    		}
    	}
    	
    	public static void media(int[] voto){
    		int somma = 0;
    		int media=0;
    		for (int i=0; i<NumeroStudenti; i++ ){
    			somma = voto[i] + somma;
    			System.out.println("La media voti dell'esame e':");
    			System.out.print(media);
    	}
    		media=somma/NumeroStudenti;
    		
    	}
    	}
    main.java

    codice:
    public class main {
    	
       public static void main(String[] args){ 
    	   studenti1.inserimento(studenti1.nome, studenti1.cognome, studenti1.voto, studenti1.matricola);
    	   studenti1.media(studenti1.voto);
    	   studenti1.stampa(studenti1.nome, studenti1.cognome, studenti1.voto, studenti1.matricola);
    }
    }
    Grazie mille a tutti per l'aiuto che mi state dando =)

  8. #8
    ti da quest'errore perchè i tuoi vettori non sono stati ancora creati e, quindi, quando ci vai ad inserire dei dati ti da errore essendo il vettore inesistente

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 © 2026 vBulletin Solutions, Inc. All rights reserved.