Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-03-2006, 22:25   #1
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
[JAVA]prendere dati da tastiera...

Codice:
import java.io.*;

public class MainClass {

	public static void main(String[] args) {
	//per fare una lettura da tastiera
	InputStreamReader tastiera=new InputStreamReader(System.in);
	BufferedReader buffer=new BufferedReader(tastiera);
	
	try{
	System.out.println("inserisci il numero di dischi\n");
	int n=(int)buffer.read();
	System.out.println(n);
	String [][] array=new String[5][n];
	for (int j=0;j<5;j++){
	for (int i=0;i<n;i++){
	array [i][j]=new String(buffer.readLine());}
	}}
	catch(IOException e){
		System.out.println("Errore!!"+e);
	}
	}
	

	
}
la domanda è: dove ho sbagliato? parlo della riga in cui c'è da immetere un numero da tastiera per completare l'array di array di stringhe... c'è bisogno di svuotare il buffer?come si fa?
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2006, 00:44   #2
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Codice:
import java.io.*;

public class MainClass {

	public static void main(String[] args) {
		// per fare una lettura da tastiera
		InputStreamReader tastiera = new InputStreamReader(System.in);
		BufferedReader buffer = new BufferedReader(tastiera);

		try {
			System.out.println("inserisci il numero di dischi\n");
			int n = Integer.parseInt(buffer.readLine());
			System.out.println(n);
			String[][] array = new String[5][n];
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < 5; j++) {
					array[j][i] = buffer.readLine();
				}
			}
			System.out.println("Dati inseriti:");
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < 5; j++) {
					System.out.println(array[j][i]);
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
l'errore fondamentale era utilizzare il metodo buffer.read() e poi castare ad int.... il metodo corretto è buffer.readLine() da convertire in int tramite Integer.parseInt()
poi ho fatto qualche modifichina nel codice perchè non mi piace fare un ciclo in cui c'è prima la j e poi la i, ma preferisco invertire i numeri nell'array

EDIT: dimenticavo... è pure inutile fare new String(buffer.readLine()) dato che questo metodo ti restituisce già una stringa...
__________________

Ultima modifica di ^TiGeRShArK^ : 03-03-2006 alle 00:46.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2006, 01:29   #3
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
grazie mille
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 13:36   #4
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
ma nessuno crede che l'IO in Java sia un pò troppo confusionario?..insomma il concetto base è semplice
colleghi lo stream ad una fonte, e poi lo bufferizzi...ma quanta confusione....
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 13:40   #5
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da NeoNum6
ma nessuno crede che l'IO in Java sia un pò troppo confusionario?..insomma il concetto base è semplice
colleghi lo stream ad una fonte, e poi lo bufferizzi...ma quanta confusione....
prova le aleternative, per esempio C, e poi dimmi se Java non è quello semplice
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 14:41   #6
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
...io ho provato C...lo trovo più semplice a causa del livello di astrazione più basso...
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 14:53   #7
dnarod
Senior Member
 
L'Avatar di dnarod
 
Iscritto dal: Nov 2002
Messaggi: 4329
wow, sei una macchina...come fai a trovare l IO di c piu facile di quello di java?? buon per te comunque
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga|
|ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck|
dnarod è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 14:57   #8
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
anche a me non piace tanto quello di java...
ma comunque non ci metti niente a crearti una classettina che te lo gestisca in modo semplice...
anzi... ora quasi quasi provo a farla e se esce bene la posto
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 14:58   #9
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
forse con un po più di pratica vi darò ragione...
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 14:59   #10
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
Quote:
Originariamente inviato da ^TiGeRShArK^
anche a me non piace tanto quello di java...
ma comunque non ci metti niente a crearti una classettina che te lo gestisca in modo semplice...
anzi... ora quasi quasi provo a farla e se esce bene la posto
magari!
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 15:04   #11
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
volevo domandarvi una cosa: ma è prassi che per leggere un char da file bisogna creare una variabile int e poi castarla a char? oppure ho sbagliato io qualcosa??
es:
Codice:
	try{
		FileReader f=new FileReader("archivio.xml");
		BufferedReader reader=new BufferedReader(f);
		int a=reader.read();
		System.out.println((char)a);
	}
	catch(FileNotFoundException g){
		System.out.print("File Not FOund");
	}
	catch(IOException h){
		System.out.print("IOException");
	}
...BufferedReader ha un metodo readline...che legge un'intera riga...e se io volessi leggere una sola stringa? (StringTokenizer?)
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 15:27   #12
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
fatto..
scusate il ritardo ma ho dovuto sbrigare altre cosette pure
Codice:
package keyboard;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Keyboard {
	
	private static BufferedReader buffer;


	public Keyboard() {	}

	
	public static String readLine(){
		init();
		try {
			return buffer.readLine();
		} catch (IOException e) {
			return "ERROR: " + e.getMessage();
		}
	}
	
	
	public static int readInt(){
		init();
		String line = readLine();
		return Integer.parseInt(line);
	}
	
	
	private static void init(){
		InputStreamReader keyboard = new InputStreamReader(System.in);
		buffer = new BufferedReader(keyboard);
	}
}
potete continuare ad estenderla come volete (sempre se vi serve a qualcosa 'sta skifezzina )
e comunque qui c'è la classe in cui l'ho provata:
Codice:
import keyboard.Keyboard;

public class Prova {

	public Prova() {}


	public static void main(String[] args) {
		System.out.println("Scrivi qualcosa: ");
		System.out.println("Input della tastiera: " + Keyboard.readLine());
		System.out.println("Inserisci un numero: ");
		System.out.println("Numero inserito: " + Keyboard.readInt());
	}

}
... si vede ke non ho un kazzo da fare finkè la build di diamonds è rotta, vero???
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 15:29   #13
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da NeoNum6
...BufferedReader ha un metodo readline...che legge un'intera riga...e se io volessi leggere una sola stringa? (StringTokenizer?)
si la soluzione migliore è caricarsi tutto il file in un'arrayList di stringhe e quindi applicare StringTokenizer ad ogni riga imho....
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 15:49   #14
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
a me sembra che la scanf(%s,stringa) sia molto più semplice in questo caso...
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 15:59   #15
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
perchè è + semplice di String s = Keyboard.readLine()???
tieni conto che col code completion ci metti meno a scrivere la seconda opzione e inoltre il codice risulta + chiaro e leggibile...
vuoi mettere con uno scanf(%s, stringa) come leggibilità?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 16:17   #16
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
aspetta però... con String s = Keyboard.readLine() non hai mica finito...devi usare una StringTokenizer che ti divide le 10 100 1000 stringhe che ci sono sulla prima riga...ricordo che il bufferedreader è di circa 8000 caratteri!
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 16:26   #17
dnarod
Senior Member
 
L'Avatar di dnarod
 
Iscritto dal: Nov 2002
Messaggi: 4329
beh non c e solo readline
puoi leggere qualsiasi tipo di dato primitivo (dai un occhio alla documentazione), isolare cio che ti serve, matchare cio che vuoi cercare in una riga, eccetera
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga|
|ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck|
dnarod è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 16:29   #18
NeoNum6
Senior Member
 
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
qualcuno di voi programma in linux??
sto cercando di aprire unsa semplicissima finestra JPanelOption.showMessageDialog()


** ERROR **: file ../../../src/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImage.c: line 572 (createRawData): assertion failed: (data_fid != 0)
aborting...

...dnarod a quel che dici tu ho già risposto...magari quando farò un po piu di esperienza la penserò come voI!
__________________
Linux User 414915 linux counter
Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
NeoNum6 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2006, 19:02   #19
dnarod
Senior Member
 
L'Avatar di dnarod
 
Iscritto dal: Nov 2002
Messaggi: 4329
azz hai messo me in quel noi....io sono quasi certamente piu inesperto di te, cmq grazie per la fiducia....probabilmente pero parlo cosi di java perche lo conosco meglio
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga|
|ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck|
dnarod è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2006, 00:01   #20
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da NeoNum6
aspetta però... con String s = Keyboard.readLine() non hai mica finito...devi usare una StringTokenizer che ti divide le 10 100 1000 stringhe che ci sono sulla prima riga...ricordo che il bufferedreader è di circa 8000 caratteri!
aspetta..
ma ora stai parlando della tastiera o del file xml???
dalla tastiera mi pare difficile che una riga contenga 8000 caratteri..
se il file che devi leggere è un file xml ti basta usare un parser xml come xerces (ma ce ne sono molti altri)
Se invece devi leggere un file del tipo chiave valore, ad esempio:
heigth = 20
width = 50
basta caricartelo mediante la classe property che ti genera un hashmap da cui puoi ricavare tutto ciò che vuoi inserendo la chiave da leggere.
Per un file di testo generico invece il metodo migliore e imho quello che ti ho detto prima....
carichi tutto il file in un arraylist di stringhe e usi lo stringtokenizer su ogni riga..
in questo modo anzikè effettuare ogni volta accessi al file accedi alla memoria che è MOOOLTOOO più veloce (anche se solitamente il file viene caricato in cache tramite il prefetching dal sistema operativo, ma mi sa che cmq l'accesso in memoria è + efficiente).
alla fine dipende da quello ke devi fare...
non c'è una soluzione generale...
come diceva qualcuno "the right tool for the right job" cioè prima devi capire bene quali sono le tue esigenze e quindi potrai usare lo strumento che soddisfi meglio le tue esigenze....
cmq se mi spieghi meglio quello che devi fare forse ti posso aiutare

EDIT: OT dimenticavo. DNAROD: domani pom sei precettato a casa mia per darmi una mano col refactoring di diamonds. Puoi mancare solo se è prevista la fine del mondo per domani, è già da troppo tempo ke rimandi
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Arianespace potrebbe lanciare il primo r...
Google Pixel 10a disponibile al prezzo m...
Microsoft Copilot nei guai: email riserv...
AOC a 399€ su Amazon: QD-OLED 240 Hz e 0...
La Cina ha recuperato dal mare il primo ...
Boeing CST-100 Starliner: la NASA rende ...
hiop e TaDa uniscono le forze per trasfo...
Thermal Grizzly mostra il Ryzen 7 9850X3...
AMD Ryzen 'Olympic Ridge' Zen 6 per desk...
Donald Trump renderà pubbliche in...
Prezzo mai visto da mesi: ECOVACS DEEBOT...
Non solo S26, Samsung sta per lanciare a...
Windows 11 avrà a breve uno Speed...
Ask Intel: l'assistente IA che ti aiuta ...
Nasce Freedom.gov: il portale USA per ag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v