Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-10-2002, 17:43   #1
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
[Java]Lettura numero

Ho questo codice:
Codice:
 import java.io.*;
/*
 *
 * Nome: primo.java
 * Data : 23/10/2002
 * Descrizione : esegue la somma di 2 numeri e ristituisce il risultato
 * Autore : Lucas
 *
 */
class primo
{
	int primo, secondo, risultato;
	
public static void main(String[] args) {
 	
System.out.println("Digita il primo numero:\n");
// Legge il primo numero
System.in.readln(primo);
System.out.println("Digita il secondo numero:\n");
// Legge il secondo numero
System.in.readln(secondo);
risultato = primo + secondo;
// Stampa il risultato 
System.out.println("\nIl risultato è: "+ risultato );
}

}
Ma compilandolo mi da:
Quote:
--------------------Configuration: JDK 1.3.1 <Default>--------------------
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:18: non-static variable primo cannot be referenced from a static context
System.in.readln(primo);
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:18: cannot resolve symbol
symbol : method readln (int)
location: class java.io.InputStream
System.in.readln(primo);
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:21: non-static variable secondo cannot be referenced from a static context
System.in.readln(secondo);
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:21: cannot resolve symbol
symbol : method readln (int)
location: class java.io.InputStream
System.in.readln(secondo);
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:22: non-static variable risultato cannot be referenced from a static context
risultato = primo + secondo;
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:22: non-static variable primo cannot be referenced from a static context
risultato = primo + secondo;
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:22: non-static variable secondo cannot be referenced from a static context
risultato = primo + secondo;
^
C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:24: non-static variable risultato cannot be referenced from a static context
System.out.println("\nIl risultato è: "+ risultato );
^
8 errors

Process completed.
Dove sbaglio??????
E il mio primo prog!




Tnk
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2002, 18:03   #2
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
ap!

Vi allego il files......magari serve
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2002, 18:03   #3
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
doppio
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2002, 19:45   #4
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
ap
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2002, 22:27   #5
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19149
leggi l'errore, ti dice che non puoi utilizzare una variabile che non è static in un metodo static.

il modo più veloce per risolvere è dichiarare static primo secondo e risultato, non ti darà più l'errore.

purtroppo è un problema di quando si usano dati statici questo, del resto uno prima o poi il main deve farselo quindi spesso qualcosa di statico serve :-)
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 10:02   #6
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Innanzitutto il nome della classe...è buona norma usare sempre la prima lettera maiuscola, è una convenzione...le minuscole si usano per le varabili. In questo modo un programmatore che legge il tuo codice sa subito cosa si trova di fronte.

Come ti hanno detto poi, il metotdo Main è per definizione statico, perciò non puoi usare al suo interno delle variabili non statiche.


Passiamo agli altri errori:

C:\WINDOWS\Desktop\Luca\Java\prove\primo.java:21: cannot resolve symbol
symbol : method readln (int)
location: class java.io.InputStream
System.in.readln(secondo);

Il metodi readln NON ESISTE, come potraoi verificare dalla documentazione sulle API (se non lo hai fatto scaricatele e programma con quelle aperte SEMPRE in una finestra).

Infatti: se cerchi la classe System, troverai che la variabili "in" a cui accedi, è di tipo InputStream. Allora vai a vedere la classe InputStream e ti accorgi che il metodo readln NON esiste. Esiste il metodo "read()" , che restituisce si un intero, ma in realtà viene visto come un char, ovvero un carattere. Noterai dalla documentazione che il metodi read() "lancia" (throws) IOException, perciò la sua invocazione va messa in un blocco tyy, catch.

UNa versione compilabile del tuo main è questa:

public static void main(String[] args) {

try {
System.out.println("Digita il primo numero:");
// Legge il primo numero
primo = System.in.read();
System.out.println("Digita il secondo numero:");
// Legge il secondo numero
secondo = System.in.read();
risultato = primo + secondo;
// Stampa il risultato
System.out.println("\nIl risultato è: "+ risultato );
}
catch(IOException ioe){
System.out.println("Si è verificato un errore : " + ioe.getMessage());
}

}

Non va bene comunque per lo scopo...infatti prova ad inserire 0 come primo numero e premere invio... = in realtà 0 viene codificato come 48 che è il suo codice ASCI, e l'invio stesso viene preso come secondo carattere, il suo codice ASCI è 13. Infatto otterrai 61 come risultato!
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 11:32   #7
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Una versione adatta allo scopo (ma assai scomoda!!!! E' una forzatura!):

{


public static void main(String[] args) {


System.out.println("Digita il primo numero:");
// Legge il primo numero


int primo;
String primoNumber = "";

try{

while ( ! ((primo = System.in.read()) == 0x000d) ){ //0x000d line feed
primoNumber+= (char)primo;
}
int temp = System.in.read(); // il 0x000a carriage return
}
catch(IOException ioe){
System.out.println("Si è verificato un errore : " + ioe.getMessage());
}


System.out.println("primoNumber: " + primoNumber);

System.out.println("Digita il secondo numero:");
// Legge il secondo numero


int secondo ;

String secondoNumber = "";

try{

while ( !( (secondo= System.in.read()) == 0x000d )){

secondoNumber+= (char)secondo;
}
}
catch(IOException ioe){
System.out.println("Si è verificato un errore : " + ioe.getMessage());
}

System.out.println("secondoNumber: " + secondoNumber);

try{
int risultato = Integer.parseInt(primoNumber) + Integer.parseInt(secondoNumber);
// Stampa il risultato
System.out.println("Il risultato è: "+ risultato );
}
catch(Exception ex){
System.out.println("Impossibile proseguire! " + ex.getMessage()+ " non e' un intero!" );
}

}

}


In pratica il problema + grosso è non considerare il tasto INVIO, la cui codifica ASCII è 10 (0X00a in esadecimale) + 13, ovvero pensa a una macchina da scrivere e a quando volevi andare a capo: facevi un movimento per portare il foglio a fine corsa (line feed= 10) e poi giravi la rotellina (carriage return=13).
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 11:36   #8
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Sembra un casino! Ma in realtà usando altri modi ci si impiega un attimo...l'input da terminale poi, in JAVA, è proprio una delle cose più scomode... Bastava ad esempio passare i due numeri da sommare come parametri del metodo main(String args[]).
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 14:06   #9
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
in che senso sommarli?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 15:06   #10
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Non ho capito...in che senso..."in che senso?"
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 15:09   #11
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Quote:
Originariamente inviato da cn73
[b]Bastava ad esempio passare i due numeri da sommare come parametri del metodo main(String args[]).
cosa intendi?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 15:11   #12
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
public static void main(String[] args) {


int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
System.out.println(n1 + " + " + n2 + " = " + (n1+n2));
}

da linea di comando:

java Primo 1 1 ti darà l'output

1 + 1 = 2
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 15:12   #13
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Quote:
Originariamente inviato da cn73
[b]public static void main(String[] args) {


int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
System.out.println(n1 + " + " + n2 + " = " + (n1+n2));
}

da linea di comando:

java Primo 1 1 ti darà l'output

1 + 1 = 2


Capito, tmk!
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 15:22   #14
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Di niente! Un consiglio, non ricordo se l'avevo già detto: lascia perdere il jBuilder per cominciare..."Sporca" il codice con un casino di cavolate sue e non ti permette di capire alcuni concetti semplici ma fondamentali come quello di classpath. procurati un Editor di testo potente (c'è n'è un mucchio ancghe freeware, io uso UltraEdit o EditPlus) e compila ed esgu direttamente da jre le tue applicazioni
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 15:55   #15
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Quote:
Originariamente inviato da cn73
[b]Di niente! Un consiglio, non ricordo se l'avevo già detto: lascia perdere il jBuilder per cominciare..."Sporca" il codice con un casino di cavolate sue e non ti permette di capire alcuni concetti semplici ma fondamentali come quello di classpath. procurati un Editor di testo potente (c'è n'è un mucchio ancghe freeware, io uso UltraEdit o EditPlus) e compila ed esgu direttamente da jre le tue applicazioni

ora uso JCreator Le e mi piacie molto!
Che ne pensi di questo?????


Altra domanda ......essendo uscire il Sdk 1.4.1 e avendo io l'1.3.1, dovrei aggiornarE?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 16:36   #16
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
JCreator Le -...onestamente non lo conosco...

Per l'aggiornamento...direi di no! Pensa che noi sviluppiamo ancora con la 1.1.8 .

Le funzionalità base non cambiano di certo
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 17:15   #17
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Sdk 1.3.1 ---> Sdk 1.4.1: conviene ?

Quote:
Originariamente inviato da cn73
[b]JCreator Le -...onestamente non lo conosco...

Per l'aggiornamento...direi di no! Pensa che noi sviluppiamo ancora con la 1.1.8 .

Le funzionalità base non cambiano di certo
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2002, 17:15   #18
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Sdk 1.3.1 ---> Sdk 1.4.1: conviene ?

Quote:
Originariamente inviato da cn73
[b]JCreator Le -...onestamente non lo conosco...

Per l'aggiornamento...direi di no! Pensa che noi sviluppiamo ancora con la 1.1.8 .

Le funzionalità base non cambiano di certo



tnk
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Phanteks XT M5, V5 e V5-LCD disponibili:...
Geely e Ford insieme per l'Europa: firma...
Geekbench 7 è disponibile e cambi...
Data center e cavi sottomarini: pronta u...
Usare la lingua come un mouse: MouthPad ...
IA agentica: la corsa all'implementazion...
No, George Russell non è bollito: ecco c...
HONOR cambia logo: il nuovo volto dell'a...
Cina: corsa ad accaparrarsi le CPU serve...
Giga in Europa e tariffe extra-UE, facci...
NVIDIA RTX Spark: quali saranno i primi ...
Collabora Online 26.04 porta l'IA nella ...
Google multata dall'UE per 890 milioni d...
Scopa elettrica MOVA G70 Complete a 199€...
Colonnine elettriche in Italia: record d...
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: 18:47.


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