Pagina 1 di 1

[JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 15:44
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

Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 15:48
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) + "'");

	}
}

Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 16:01
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


Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 16:05
da Zoff
Vedi il codice che ti ho scritto sopra.

Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 16:06
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

Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 16:08
da Zoff
Io l'ho usato solo per avere la readLine() ma si può fare anche senza.

Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 16:28
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) {}
	}
}

Re: [JAVA] riconosce array come classe

Inviato: domenica 17 giugno 2012, 16:35
da Zoff
perché System.in.read() legge una sola lettera.