Importare classi [Java]
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 11 di 11

Discussione: Importare classi [Java]

Cambio titolo
  1. #1
    :D L'avatar di Xboxman
    Registrato il
    09-03
    Località
    Napoli
    Messaggi
    7.867

    Importare classi [Java]

    Ciao a tutti. Ho un problema: non riesco ad importare classi
    Allora, ho un file "CreateRandomFile.java":
    Codice:
    import classes2.RandomAccessAccountRecord;
    import java.io.*;
    
    public class CreateRandomFile
    {
    ...
    Poi nella sottocartella "classes2" ho:
    il file "AccountRecord":
    Codice:
    package classes2;
    
    public class AccountRecord
    {
    ...
    e il file "RandomAccessAccountRecord" che estende AccountRecord:
    Codice:
    package classes2;
    import java.io.*;
    
    public class RandomAccessAccountRecord extends AccountRecord
    {
    ...
    Compilo correttamente AccountRecord.java. Ma quando tento di compilare RandomAccessAccountRecord.java, mi da errori e non mi riconosce i metodi che ho dichiarato in AccountRecord e che ho utilizzato in RandomAccessAccountRecord... cosa ho sbagliato?

  2. #2
    Daimadoshi L'avatar di matoriv
    Registrato il
    11-03
    Località
    praticamente Genova
    Messaggi
    1.644
    Citazione Xboxman Visualizza Messaggio
    Ciao a tutti. Ho un problema: non riesco ad importare classi
    Allora, ho un file "CreateRandomFile.java":
    Codice:
    import classes2.RandomAccessAccountRecord;
    import java.io.*;
    
    public class CreateRandomFile
    {
    ...
    Poi nella sottocartella "classes2" ho:
    il file "AccountRecord":
    Codice:
    package classes2;
    
    public class AccountRecord
    {
    ...
    e il file "RandomAccessAccountRecord" che estende AccountRecord:
    Codice:
    package classes2;
    import java.io.*;
    
    public class RandomAccessAccountRecord extends AccountRecord
    {
    ...
    Compilo correttamente AccountRecord.java. Ma quando tento di compilare RandomAccessAccountRecord.java, mi da errori e non mi riconosce i metodi che ho dichiarato in AccountRecord e che ho utilizzato in RandomAccessAccountRecord... cosa ho sbagliato?
    magari lavori su un oggetto di tipo AccountRecord che punta ad uno di tipo RandomAccessAccountRecord, prova ad aggiungere anche l'import:
    import classes2.AccountRecord;
    e facci sapere

  3. #3
    :D L'avatar di Xboxman
    Registrato il
    09-03
    Località
    Napoli
    Messaggi
    7.867
    Citazione matoriv Visualizza Messaggio
    magari lavori su un oggetto di tipo AccountRecord che punta ad uno di tipo RandomAccessAccountRecord, prova ad aggiungere anche l'import:
    import classes2.AccountRecord;
    e facci sapere
    Niente da fare, i solidi errori o_O

  4. #4
    Daimadoshi L'avatar di matoriv
    Registrato il
    11-03
    Località
    praticamente Genova
    Messaggi
    1.644
    Citazione Xboxman Visualizza Messaggio
    Niente da fare, i solidi errori o_O
    posta gli errori

  5. #5
    :D L'avatar di Xboxman
    Registrato il
    09-03
    Località
    Napoli
    Messaggi
    7.867
    Citazione matoriv Visualizza Messaggio
    posta gli errori
    Spoiler:

  6. #6
    Il pazzo!! L'avatar di roby65
    Registrato il
    07-04
    Messaggi
    1.294
    metti tutto nella stessa cartella

  7. #7
    Daimadoshi L'avatar di matoriv
    Registrato il
    11-03
    Località
    praticamente Genova
    Messaggi
    1.644
    non è che i metodi sono privati? possono essere ereditati solo se pubblici o protected. Intanto ora che ho visto la gerarchia leva pure l'import classes2.AccountRecord che non serviva in effetti e scusami. sai una cosa , posta il codice di tutto completo e dimmi se ho capito bene

    cartella root : CreateRandomFile.java , cartella classes2

    cartella classes2 : AccountRecord.java , RandomAccessAccountRecord.java

    compili prima AccountRecord poi RandomAccessAccountRecord poi CreateRandomFile.

    ok?

    e poi rivediamo... che son curioso

  8. #8
    :D L'avatar di Xboxman
    Registrato il
    09-03
    Località
    Napoli
    Messaggi
    7.867
    Citazione matoriv Visualizza Messaggio
    non è che i metodi sono privati? possono essere ereditati solo se pubblici o protected. Intanto ora che ho visto la gerarchia leva pure l'import classes2.AccountRecord che non serviva in effetti e scusami. sai una cosa , posta il codice di tutto completo e dimmi se ho capito bene

    cartella root : CreateRandomFile.java , cartella classes2

    cartella classes2 : AccountRecord.java , RandomAccessAccountRecord.java

    compili prima AccountRecord poi RandomAccessAccountRecord poi CreateRandomFile.

    ok?

    e poi rivediamo... che son curioso
    Esatto, i file sono disposti in questo modo... AccountRecord viene compilato correttamente, mentre RandomAccessAccountRecord no.

    Ecco i sorgenti completi:

    Spoiler:
    CreateRandomFile.java
    Codice:
    import classes2.RandomAccessAccountRecord;
    import java.io.*;
    
    public class CreateRandomFile
    {
    	private static final int NUMBER_RECORDS = 100;
    	
    	public static void createFile()
    	{
    		try
    		{
    			file = new RandomAccessFile("clients.dat","rw");		
    			RandomAccessAccountRecord blankRecord = new RandomAccessAccountRecord();
    			
    			for (int count=0;count<NUMBER_RECORDS;count++)
    			{
    				blankRecord.write(file);
    			}
    			
    			System.out.println("Il file clients.dat è stato creato");
    			System.exit(0);
    		}
    		catch (IOException e)
    		{
    			System.err.println("Errore nella scrittura del file");
    		}
    		finally
    		{
    			try
    			{
    				file.close();
    			}
    			catch (IOException e)
    			{
    				System.err.println("Errore nella chiusura del file");
    				System.exit(1);
    			}
    		}
    	}
    }

    Spoiler:
    AccountRecord.java
    Codice:
    package classes2;
    
    public class AccountRecord
    {
    	private int account;
    	private String firstName;
    	private String lastName;
    	private double balance;
    	
    	public AccountRecord()
    	{
    		this(0,"","",0.0);
    	}
    	
    	public AccountRecord(int acct, String first, String last, double bal)
    	{
    		setAccount(acct);
    		setFirstName(first);
    		setLastName(last);
    		setBalance(bal);
    	}
    	
    	public void setAccount(int acct)
    	{
    		account = acct;
    	}
    	
    	public int getAccount()
    	{
    		return account;
    	}
    	
    	public void setFirstName(String first)
    	{
    		firstName = first;
    	}
    	
    	public String getFirstName()
    	{
    		return firstName;
    	}
    	
    	public void setLastName(String last)
    	{
    		lastName = last;
    	}
    	
    	public String getLastName()
    	{
    		return lastName;
    	}
    	
    	public void setBalance(double bal)
    	{
    		balance = bal;
    	}
    	
    	public double getBalance()
    	{
    		return balance;
    	}
    }

    Spoiler:
    RandomAccessAccountRecord.java
    Codice:
    package classes2;
    import java.io.*;
    
    public class RandomAccessAccountRecord extends AccountRecord
    {
    	public static final int SIZE = 72;
    	
    	//Costruttore senza argomenti che chiama il costruttore con valori di default
    	public RandomAccessAccountRecord()
    	{
    		this(0,"","",0.0);
    	}
    	
    	//Inizializza un oggetto RandomAccessAccountRecord
    	public RandomAccessAccountRecord(int account,String firstName,String lastName,double balance)
    	{
    		super(account,firstName,lastName,balance);
    	}
    	
    	//Legge un record da uno specifico oggetto RandomAccessFile
    	public void read(RandomAccessFile file) throws IOException
    	{
    		setAccount(file.readInt());
    		setFirstName(readName(file));
    		setLastName(readName(file));
    		setBalance(file.readDouble());
    	}
    	
    	//Garantisce che il nome abbia una lunghezza appropriata
    	private String readName(RandomAccessFile file) throws IOException
    	{
    		char name[] = new char[15];
    		for (int count=0;count<name.length;count++)
    		{
    			name[count] = file.readChar();
    		}
    		return new String(name).replace('\0',' ');
    	}
    	
    	//Scrive un record nello specifico oggetto RandomAccessFile	
    	public void write(RandomAccessFile file) throws IOException
    	{
    		file.writeInt(getAccount());
    		writeName(file,getFirstName());
    		writeName(file,getLastName());
    		file.writeDouble(getBalance());
    	}
    	
    	//Scrive un nome in un file; massimo 15 caratteri
    	private void writeName(RandomAccessFile file,String name) throws IOException
    	{
    		StringBuffer buffer = null;
    		
    		if (name != null)
    		{
    			buffer = new StringBuffer(name);
    		}
    		else
    		{
    			buffer = new StringBuffer(15);
    		}
    		
    		buffer.setLength(15);
    		file.writeChars(buffer.toString());
    	}
    }

  9. #9
    Daimadoshi L'avatar di matoriv
    Registrato il
    11-03
    Località
    praticamente Genova
    Messaggi
    1.644
    sostituisci


    private int account;
    private String firstName;
    private String lastName;
    private double balance;


    con


    protected int account;
    protected String firstName;
    protected String lastName;
    protected double balance;


    e poi dimmi

  10. #10
    :D L'avatar di Xboxman
    Registrato il
    09-03
    Località
    Napoli
    Messaggi
    7.867
    Citazione matoriv Visualizza Messaggio
    sostituisci


    private int account;
    private String firstName;
    private String lastName;
    private double balance;


    con


    protected int account;
    protected String firstName;
    protected String lastName;
    protected double balance;


    e poi dimmi
    Niente da fare, continua a darmi gli stessi errori... il problema è che non mi riconosce la classe AccountRecord quando la estendo da RandomAccessAccountRecord. E di conseguenza non mi riconosce i metodi

  11. #11
    :D L'avatar di Xboxman
    Registrato il
    09-03
    Località
    Napoli
    Messaggi
    7.867
    Raga ho risolto il problema, finalmente! Compilando CreateRandomFile.java, automaticamente venivano compilati sia AccountRecord sia RandomAccessAccountRecord Ma perchè succede questo?? Perchè se compilo singolarmente RandomAccessAccountRecord non mi riconosce i metodi mentre se invece compilo il file principale funziona?? Vabbè comunque ora mi sento meglio Posso continuare il mio apprendimento Java RoX

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •