Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50

    [JAVA] Metodo che stampa array

    Salve, devo progettare una classe che costruisca un array con numeri random, che cerchi un valore nell'array (se c'è) e che stampi gli elementi dell'array. Ho problemi con l'ultimo passaggio, il metodo che dovrebbe stampare l'array. (la parte /**stampa array*/ è sbagliata, il resto è ok)

    codice:
    import java.util.Arrays;
    import java.util.Random;
    
    
    public class InteriArray {
    
    	int[]array;
    	
    	
    	//Costruttori
    	public InteriArray(int grandezza) 
    	{
    		array= new int[grandezza];
    		Random generator = new Random();
    		
    		for (int i=0; i<grandezza; i++)
    		{
    			i = generator.nextInt(99);
    			array[i]=i;
    		}
    	}
    
    		
    	//Metodi
    	/**ordinamento*/
    	public void Ordinamento() 
    	{
    		Arrays.sort(array);
    	}
    		
    		
    	/**ricerca binaria
    	 * @param v il valore da cercare
    	 * @return true o false */
    	public boolean search(int v)
    	{
    		int low = 0;
    		int high = array.length - 1;
    		while (low <= high)
    		{
    			int mid = (low + high)/2;
    			int diff = array[mid]-v;
    			
    			if (diff==0)return true;
    			else if (diff < 0) low = mid + 1;
    			else high = mid -1 ;
    		}
    		return false;
    		
    		
    		/**Stampa Array */
    		public static void stamp(array){
    			for(int i=0;i<array.length;i++){
    			System.out.println(array[i]); }
    			}
    			
    			
    			
    			
    		
    	
    	}
    	
    }

  2. #2
    Partendo dal fatto che dire che un cosa "è sbagliata" in campo della programmazione non vuol dire nulla, se non integrata da altro come ho un eccezione a runtime, ho un errore di compilazione...
    Dal codice che vedo suppongo che sia la seconda in quanto hai inserito la dichiarazione del metodo "stamp" all'interno del metodo "search" cosa che ovviamente non è permessa.
    Oltretutto la firma del metodo "stamp" non è corretta in quanto non hai tipato il parametro array.
    codice:
    package it.temp;
    
    public class InteriArray {
    
    	int[] array;
    
    	// Costruttori
    	public InteriArray(int grandezza) {
    		array = new int[grandezza];
    		Random generator = new Random();
    
    		for (int i = 0; i < grandezza; i++) {
    			i = generator.nextInt(99);
    			array[i] = i;
    		}
    	}
    
    	// Metodi
    	/** ordinamento */
    	public void Ordinamento() {
    		Arrays.sort(array);
    	}
    
    	/**
    	 * ricerca binaria
    	 * 
    	 * @param v
    	 *            il valore da cercare
    	 * @return true o false
    	 */
    	public boolean search(int v) {
    		int low = 0;
    		int high = array.length - 1;
    		while (low <= high) {
    			int mid = (low + high) / 2;
    			int diff = array[mid] - v;
    
    			if (diff == 0)
    				return true;
    			else if (diff < 0)
    				low = mid + 1;
    			else
    				high = mid - 1;
    		}
    		return false;
    
    	}
    
    	/** Stampa Array */
    	public void stamp(int[] array) {
    		for (int i = 0; i < array.length; i++) {
    			System.out.println(array[i]);
    		}
    	}
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50
    Nel tester mi da comunque errore

    codice:
    public class interiArray_tester {
    
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		//Costruisce un vettore di 10 elementi random
    		InteriArray vet = new InteriArray(10);
    		
    		//stampa prima dell'ordinamento
    		vet.stamp(vet);
    		
    		//Ordina il vettore
    		vet.Ordinamento();
    		
    		//Cerca 3(se c'è) nel vettore
    		vet.search(3);
    		
    		
    		
    		
    	}
    
    }
    mi dice che il metodo non è applicabile per il tipo InteriArray.. (parlo di vet.stamp(vet))

  4. #4
    Ovvio che ti dia errore, la domanda è ma sai cosa vuol dire un il Tipo di una variabile ?
    Hai dichiarato il metodo stamp che accetta una parametro di Tipo Array (int []) e tu gli vuoi passare un oggetto di tipo (InteriArray).....

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Guarda bene cosa hai fatto:

    codice:
    for (int i = 0; i < grandezza; i++) {
       i = generator.nextInt(99);
       array[i] = i;
    }
    Usi la variabile "i" per scorrere l'array, ma alla stessa assegni il valore casuale generato da "generator" e poi la riusi per indicizzare l'array...


    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

  6. #6
    Peccato che non ci arriva neanche ad eseguirlo quel codice...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50
    Si scusate, ho copiato il codice sbagliato, quella parte l'avevo già corretta mettendo int x = ... e togliendo la i.. grazie comunque

    mi rimane però l'errore per la stampa.. ho provato a cambiare il tipo del parametro nel metodo..mettendo InteriArray invece di int[], ma poi mi da errore su length e array[i]

    codice:
    public void stamp(InteriArray array) {
    		for (int i = 0; i < array.length; i++) {
    			System.out.println(array[i]);
    		}
    	}

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50
    Originariamente inviato da francesco.muia
    Peccato che non ci arriva neanche ad eseguirlo quel codice...
    in che senso?

  9. #9
    Mi sa che si sono accavallati i post, dicevo che non arrivavi ad eseguire quel codice in quanto non riuscivi a compilare.
    Sorry...

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50
    Si scusate, ho copiato il codice sbagliato, quella parte l'avevo già corretta mettendo int x = ... e togliendo la i.. grazie comunque
    L'ho sistemato quell'errore, come ho detto su.. e ripeto, mi rimane comunque l'errore del tipo . Come posso fare a stampare un vettore di tipo InteriArray?

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