[JAVA] riconosce array come classe

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
sepp95
Prode Principiante
Messaggi: 161
Iscrizione: lunedì 9 agosto 2010, 15:11

[JAVA] riconosce array come classe

Messaggio da sepp95 »

salve a tutti oggi ho modificato leggermante un programmino, per sperimentare.

ecco il codice

Codice: Seleziona tutto

import java.io.*;

public class leggi{

	public static void main(String args[]){
		try{
			PipedInputStream pis = new PipedInputStream();
			BufferedInputStream bis = new BufferedInputStream(pis);	//altrimenti mi legge solo la prima lettera
			DataInputStream dis = new DataInputStream(bis);		//per gestire il formaro byte
			PipedOutputStream pos = new PipedOutputStream(pis);
			BufferedOutputStream bos = new BufferedOutputStream(pos);		
			DataOutputStream dos = new DataOutputStream(bos);
					
			
			dos.writeChar(System.in.read());	//scrivo sotto forma di byte
			byte[] str;
			dis.readFully(str[]);
			for (int x=0; x<= str.lenght(); x++){
				System.out.print((char)str[x]);
			}
			
		}catch(IOException ioe) {}
	}
}

ed ecco l'errore

Codice: Seleziona tutto

giuseppe@giuseppe-K50AB:~/Scrivania$ javac leggi.java
leggi.java:17: '.class' expected
			dis.readFully(str[]);
			                   ^
1 error


a quanto sembra riconosce l'array str[] come una classe e vuole il metodo.

come posso risolvere?
a me sembra tutto giusto
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] riconosce array come classe

Messaggio da Zoff »

str deve essere inizializzato:

Codice: Seleziona tutto

byte[] str = new byte[1024];
Quando lo passi al metodo readFully() le quadre non ci vanno.

Quello che vuoi fare comunque si fa così:

Codice: Seleziona tutto

import java.io.*;

public class leggi {

	public static void main(String args[]) throws Exception {

		byte[] str = new byte[1024];
		PipedInputStream pis = new PipedInputStream();
		PipedOutputStream pos = new PipedOutputStream(pis);
		BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

		System.out.print("Inserisci una frase: ");
		String frase = stdin.readLine();
		pos.write(frase.getBytes()); // scrivo sotto forma di byte
		pos.flush(); //segnalo la fine dei dati scritti

		int n = pis.read(str); // in n c'è il numero di byte letti
		System.out.println("Hai inserito: '" + new String(str, 0, n) + "'");

	}
}
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
sepp95
Prode Principiante
Messaggi: 161
Iscrizione: lunedì 9 agosto 2010, 15:11

Re: [JAVA] riconosce array come classe

Messaggio da sepp95 »

modificato e provato il programma, ma mi si blocca al readFully() non capisco perchè. ho messo un pario di println per vedere fino a dove arrivava e ne esce solo 1. poi non continua più

Codice: Seleziona tutto

import java.io.*;

public class leggi{

	public static void main(String args[]){
		try{
			PipedInputStream pis = new PipedInputStream();
			BufferedInputStream bis = new BufferedInputStream(pis);	//altrimenti mi legge solo la prima lettera
			DataInputStream dis = new DataInputStream(bis);		//per gestire il formaro byte
			PipedOutputStream pos = new PipedOutputStream(pis);
			BufferedOutputStream bos = new BufferedOutputStream(pos);		
			DataOutputStream dos = new DataOutputStream(bos);
					
			
			dos.writeByte(System.in.read());	//scrivo sotto forma di byte
			byte[] str = new byte[10];
			System.out.println("fatto");		//controllo esecuzione
			dis.readFully(str, 0 , 10);
			System.out.println("fatto");		//controllo esecuzione
			for (int x=0; x<= 10; x++){
				System.out.print((char)str[x]);
			}
			
			
		}catch(IOException ioe) {}
	}
}

Codice: Seleziona tutto

giuseppe@giuseppe-K50AB:~/Scrivania$ java leggi
provoilprogramma
fatto

Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] riconosce array come classe

Messaggio da Zoff »

Vedi il codice che ti ho scritto sopra.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
sepp95
Prode Principiante
Messaggi: 161
Iscrizione: lunedì 9 agosto 2010, 15:11

Re: [JAVA] riconosce array come classe

Messaggio da sepp95 »

comunque il libro che sto leggendo non spiega molto bene BufferedReader e InputStreamReader. è un pargrafetto di mezza pagina e sto ancora provando con gli stream di byte
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] riconosce array come classe

Messaggio da Zoff »

Io l'ho usato solo per avere la readLine() ma si può fare anche senza.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
sepp95
Prode Principiante
Messaggi: 161
Iscrizione: lunedì 9 agosto 2010, 15:11

Re: [JAVA] riconosce array come classe

Messaggio da sepp95 »

se invece di readFully metto solo read() mi legge solo la prima lettera che inserisco. invece readFully() si blocca. dove è che sbaglio?

Codice: Seleziona tutto

import java.io.*;

public class leggi{

	public static void main(String args[]){
		try{
			PipedInputStream pis = new PipedInputStream();
			BufferedInputStream bis = new BufferedInputStream(pis);	//altrimenti mi legge solo la prima lettera
			DataInputStream dis = new DataInputStream(bis);		//per gestire il formaro byte
			PipedOutputStream pos = new PipedOutputStream(pis);
			BufferedOutputStream bos = new BufferedOutputStream(pos);		
			DataOutputStream dos = new DataOutputStream(bos);
					
			
			dos.writeByte(System.in.read());	//scrivo sotto forma di byte
			byte[] str = new byte[1024];
			System.out.println("fatto");		//controllo esecuzione
			dos.flush();
			dis.read(str);
			System.out.println("fatto");		//controllo esecuzione
			for (int x=0; x<= 100; x++){
				System.out.print((char)str[x]);
			}
			
			
		}catch(IOException ioe) {}
	}
}
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] riconosce array come classe

Messaggio da Zoff »

perché System.in.read() legge una sola lettera.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti