Visualizzazione stampabile
-
Jaca code
Ciao a tutti!!!
Vi sembrerà una stupidata, ma io non l ho trovata da nessuna parte :O
Vorrei sapere come si stampa a video un risultato di due interi già dichiarati!Tipo...
class Sum {
int sumk (int x, int y) {
x=1;
y=2;
int r=x+y;
return r;
non stampa nada il return Justo!?Nel più completo buio ho inserito System.out.println(r); ovvero:
class Sum {
int sumk (int x, int y) {
x=1;
y=2;
int r=x+y;
return r;
System.out.println(r);
}
}
}
MA NADE DE NADA!Consigli?
Grazzzzie a tutti in anticipo!
-
prova a mettere il system.out.println prima del return
-
Grazie Grazie si il problema era li! :) Mi sai dire qusto listato che errori ha?Mi serirebbe una NotePad con debug per scrivere in java hai qualche idea?
class corpo {
public corpo(){
int r = 2;
int s = 5;
int t = 3;
System.out.println ("Nel codice sono inseriti a:"+r+", b:"+s+", c:"+t);
int somma = r + s + t;
System.out.println ("E il risultato della loro somma e': "+somma);
}
}
}
class ProvaDiSomma {
public static void main(String[] a) {
corpo Prova = new corpo();
}
}
Un'altra cosa che magari sai dirmi...in main(Strng[] a){ cosa sarebbe "a"!? o_O
Grazzzzie!!
-
Ok "a" è il parametro che definisce l'array ok!
Mi sai dire COME azz si fa a leggere un numero inserito da tastiera!?Mi puoi postare un minilistato o un link a listato simplicerrimo per inserimento valore int a?Tipo...
class ProvaIns {
public static void main (Integer[] a) {
System.out.print("Inserisci un numero ");
Inserimento a
}
}
Grazie!
-
prima di tutto ti premetto che non sono uno spe******ta java. Vado giusto un po + in la di fare copia e incolla di quello che trovo sul web.
Il listato che hai messo è contenuto in un unico file sorgente? Se si non credo tu possa definire due classi nello stesso file. Sposta la definizione della classe corpo dentro ProvaDiSomma:
class ProvaDiSomma {
class corpo {
.....
}
public static void main(String[] a) {
ecc
per leggere un numero prova a vedere qui: how to read integers from keyboard? (Beginning Java forum at JavaRanch)
E poi ti consiglio di usare un ide dedicato tipo jdeveloper o eclipse , e te lo dice uno che ha iniziato con il vi su server unix. L'aiuto che ti da, oltre al debugger, è immenso soprattutto se sei all'inizio con java
-
un esempio di lettura
Ciao, spero che il seguente codice ti sia di aiuto ;o)
package com.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Calculator {
public static void main(String[] args) {
// Definiamo uno stream di lettura
InputStreamReader in = new InputStreamReader(System.in); // System.in è lo standard input (riga di comando)
// Definiamo un buffer di lettura
BufferedReader reader = new BufferedReader(in);
while (true) { // Ciclo infinito
try { // La lettura da parte di un buffer può generare errori che devono essere gestiti
System.out.println("Digita l'operazione da eseguire");
System.out.println("+ - x :");
// Leggiamo l'operazione scelta (digitata)
String op = reader.readLine();
// Controlliamo che sia stata scelta un'operazione valida
if (op.equals("+") || op.equals("-") || op.equals("x") | op.equals(":")) {
System.out.println("Digitare il primo numero");
// Leggiamo il primo numero
String pn = reader.readLine();
System.out.println("Digitare il secondo numero");
// Leggiamo il secondo numero
String sn = reader.readLine();
// Controlliamo che i valori digitati siano numeri (positivi o negativi, con o senza virgola)
// PS: la virgola, ricordo, viene riconosciuta dal computer tramite il punto ;op
if (pn.matches("[0-9]+[.]?[0-9]*") && sn.matches("(-)?[0-9]+[.]?[0-9]*")) {
// Lo switch serve a capire quale operazione è stata scelta
// Ricordo che lo switch funziona con numeri o singoli caratteri (char)
switch (op.toLowerCase().charAt(0)) {
case '+':
System.out.println(pn + " + " + sn + " = " + (Double.parseDouble(pn) + Double.parseDouble(sn)));
break;
case '-':
System.out.println(pn + " - " + sn + " = " + (Double.parseDouble(pn) - Double.parseDouble(sn)));
break;
case 'x':
System.out.println(pn + " x " + sn + " = " + (Double.parseDouble(pn) * Double.parseDouble(sn)));
break;
case ':':
if (Double.parseDouble(sn) > 0) {
System.out.println(pn + " : " + sn + " = " + (Double.parseDouble(pn) / Double.parseDouble(sn)));
} else {
System.out.println("Il divisore deve essere maggiore di 0");
}
break;
}
System.out.println("Vuoi continuare? (y/n)");
String yn = reader.readLine();
if(!yn.equals("y")) {
System.out.println("Bye! Bye!");
// Terminiamo il nostro ciclo infinito perchè non si è scelto di continuare (y)
System.exit(0);
}
} else {
System.out.println("Spiacente, input numerici non validi.");
}
}
} catch (Exception e) {
// In questo caso è avvenuto un errore, ed è utile capire come e dove è avvenuto.
e.printStackTrace();
}
}
}
}
Dimenticavo.... usa eclipse (Eclipse - The Eclipse Foundation open source community website.) per sviluppare in java, è free ;op
-
Grazie mille per tutti i consigli e per il SUPERLISTATO!!!!!! :cool:
Adesso mi ci metto, lo studio e vi faccio sapere!A prima vista la cosa che mi mancava era il definire un oggetto Buffer che mi permetteva di applicargli le variabili in in..Ma adesso lo guardo meglio!!
Grazie davvero per l'aiuto a tutti!Spero, un giorno, di poter ricambiare :O
-
STO CAPENDO! :)
L unica cosa che mi sfugge è questo passaggio:
if (pn.matches("[0-9]+[.]?[0-9]*") && sn.matches("(-)?[0-9]+[.]?[0-9]*")) {
matches controlla il valore di pn credo, ma non capisco "[0-9]+[.]?[0-9]*" tra parentesi [] passi i valori che possono essere inseriti ma i vari +, ? e * cosa sono!?
Non parliamo delli valori di sn!! :-X "(-)?[0-9]+[.]?[0-9]*" --> comecomecomee?!
-
Regular Expression
Si chiama così ciò che ho scritto "(-)?[0-9]+[.]?[0-9]*"
Analizziamola un po'
Tanto per iniziare, diciamo quali sono i caratteri "chiave"
I caratteri chiave sono i seguenti (li separo tutti da virgola): (,),[,],+,*,?,|,-
Grazie a questi caratteri è possibile definire alcuni pattern che servono a verificare la correttezza di una stringa.
Le parentesi tonde servono ad identificare una sequenza di caratteri
Ad esempio: (abc) ci farebbe restituire true solo se la stringa che noi andremo a matchare sia "abc"; aggiungendo poi il carattere + avremmo true anche con "abcabc", cioè con almeno una della sequenza di caratteri messa tra parentesi; con * ( Es. (abc)* ) la stringa può anche essere vuota, o contenere la sequenza innumerevoli volte; ? invece verifica che la sequenza ci sia al max una volta (anche una stringa vuota ve bene)
Andando un po' più nel complesso...
Mettiamo caso che vogliamo verificare se una parola del tipo "pippo" contenga solo le lettere p,i,o
"pippo".matches("(p|i|o)*")
Il | tra caratteri indica che nella stringa ci deve essere uno di quei caratteri, e l'asterisco dopo la chiusura della parentesi, indica che uno o più di quei valori può essere ripetuto
Se invece volessimo indicare un range di caratteri, invece di scriverli tutti, basta inserirlo tra le parentesi quadre.
Es. "2274338459".matches("[0-9]+") verifica che la stringa contenga solamente numeri; "asfopjnldefoih".matches("[a-z]+") verifica che ci siano solo caratteri alfabetici; "adfpdrg324vsd".matches("[0-9|a-z]+") verifica che siano caratteri alfanumerici
Mettendo tutto insieme secondo una giusta logica si può quindi verificare la correttezza di qualsiasi tipo di stringa.
Quindi il match che ho scritto io (sn.matches("(-)?[0-9]+[.]?[0-9]*")) verifica che la stringa sn sia del tipo 123 oppure -123 oppure 123.123 oppure -123.123
Spero di essermi spiegato abbastanza bene... purtroppo non sono il top nelle spiegazioni... :p
Ciao ciao ;)
PS: le regular expression non sono solo questo, e spiegartelo qui significherebbe scrivere centinaia di righe guida che grazie al cielo qualcun altro ha già scritto. Cercale su google ;)
-
Capito!!!Grazie davvero grazie mille...L unica cosa che "manca" forse è il "?" che credo voglia dire - ci può essere o no. -
Adesso devo fare qualche esempio by myself e applicarmi ma sei di grande aiuto davvero!!!
GRAZIE! :cool: