|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Sep 2008
Città: Padova
Messaggi: 172
|
[Java]Dubbio su ciclo for
Sto provando a creare una specie di "bot" in Java.
Il problema è che non so da dove partire. Analizzando il problema e semplificandolo ho pensato di fare qualcosa del genere: Ovviamente è solo un punto di partenza. Codice:
import jbook.util.Input; public class Main { public static void main(String[] args) { System.out.println("Come ti chiami?"); String persona; persona = Input.readString(); System.out.println("Ciao " + persona + '!'); } } Questa è la classe Input: Codice:
package jbook.util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Vector; /** * Una semplice classe per leggere stringhe e numeri dallo standard input. */ public class Input { private static BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); /** * Legge una linea di input. Nell'improbabile caso di una IOException, il * programma termina. * * @return restituisce la linea di input che l'utente ha battuto. */ public static String readString() { String inputLine = ""; try { inputLine = reader.readLine(); } catch (IOException e) { System.out.println(e); System.exit(1); } return inputLine; } public static String readString(String msg) { System.out.print(msg); String inputLine = readString(); return inputLine; } /** * Legge una linea di input e la converte in un byte. Eventuali spazi * bianchi prima e dopo l'intero vengono ignorati. * * @return l'intero dato in input dall'utente */ public static byte readByte() { String inputString = readString(); inputString = inputString.trim(); byte n = Byte.parseByte(inputString); return n; } public static byte readByte(String msg) { System.out.print(msg); byte n = readByte(); return n; } /** * Legge una linea di input e la converte in uno short. Eventuali spazi * bianchi prima e dopo l'intero vengono ignorati. * * @return l'intero dato in input dall'utente */ public static short readShort() { String inputString = readString(); inputString = inputString.trim(); short n = Short.parseShort(inputString); return n; } public static short readShort(String msg) { System.out.print(msg); short n = readShort(); return n; } /** * Legge una linea di input e la converte in un int. Eventuali spazi bianchi * prima e dopo l'intero vengono ignorati. * * @return l'intero dato in input dall'utente */ public static int readInt() { String inputString = readString(); inputString = inputString.trim(); int n = Integer.parseInt(inputString); return n; } public static int readInt(String msg) { System.out.print(msg); int n = readInt(); return n; } /** * Legge una linea di input e la converte in un long. Eventuali spazi * bianchi prima e dopo l'intero vengono ignorati. * * @return l'intero dato in input dall'utente */ public static long readLong() { String inputString = readString(); inputString = inputString.trim(); long n = Long.parseLong(inputString); return n; } public static long readLong(String msg) { System.out.print(msg); long n = readLong(); return n; } /** * Legge una linea di input e la converte in un numero in virgola mobile a * precisione singola. Eventuali spazi bianchi prima e dopo il numero * vengono ignorati. * * @return il numero dato in input dall'utente */ public static float readFloat() { String inputString = readString(); inputString = inputString.trim(); float x = Float.parseFloat(inputString); return x; } public static float readFloat(String msg) { System.out.print(msg); float x = readFloat(); return x; } /** * Legge una linea di input e la converte in un numero in virgola mobile a * precisione doppia. Eventuali spazi bianchi prima e dopo il numero vengono * ignorati. * * @return il numero dato in input dall'utente */ public static double readDouble() { String inputString = readString(); inputString = inputString.trim(); double x = Double.parseDouble(inputString); return x; } public static double readDouble(String msg) { System.out.print(msg); double x = readDouble(); return x; } /** * Legge una linea di input e ne estrae il primo carattere. * * @return il primo carattere della riga data in input dall'utente */ public static char readChar() { String inputString = readString(); char c = inputString.charAt(0); return c; } public static char readChar(String msg) { System.out.print(msg); char c = readChar(); return c; } /** * Legge una linea di input e restituisce true se la stringa e' equals a * "true" a meno di maiuscole e minuscole, false altrimenti. * * @return il booeano dato in input dall'utente */ public static boolean readBool() { String inputString = readString(); inputString = inputString.trim(); boolean b = Boolean.parseBoolean(inputString); return b; } public static boolean readBool(String msg) { System.out.print(msg); boolean b = readBool(); return b; } /** * Legge una sequenza di stringhe conclusa dalla stringa vuota e restituisce * la sequenza in un nuovo array di stringhe. * * @return l'array delle stringhe date in input dal'utente */ public static String[] readSeq() { String[] seq = readSeq(""); return seq; } public static String[] readSeq(String prompt) { Vector<String> seqTemp = new Vector<String>(); System.out.print(prompt); String inputString = readString(); while (inputString.length() > 0) { seqTemp.add(inputString); System.out.print(prompt); inputString = readString(); } String[] seq = new String[seqTemp.size()]; return seqTemp.toArray(seq); } public static String[] readSeq(String msg, String prompt) { System.out.println(msg); String[] seq = readSeq(prompt); return seq; } } Devo utilizzare un ciclo for? L'età la introduco come Int o come Double?
__________________
PACKARD BELL Easy Note TJ75@CPU INTEL Core i5 430M //GPU ATI RADEON HD 5470//RAM CORSAIR 4GB DDR3// HD WESTERN DIGITAL 640GB SATAII 3.0 GB/s |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
No, dovresti utilizzare un costrutto if-else. L'età scegli te come vederla.
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Sep 2008
Città: Padova
Messaggi: 172
|
Codice:
import jbook.util.Input; public class Main { public static void main(String[] args) { System.out.println("Come ti chiami?"); String persona; persona = Input.readString(); System.out.println("Ciao " + persona + '!'); double age = Input.readDouble("Inserire età: "); if (age > 18) { System.out.println("Sei maggiorenne"); } else if (age < 18) { System.out.println("Sei minorenne"); } } } ![]() MI ero perso in un bicchier d'acqua. ![]() Grazie
__________________
PACKARD BELL Easy Note TJ75@CPU INTEL Core i5 430M //GPU ATI RADEON HD 5470//RAM CORSAIR 4GB DDR3// HD WESTERN DIGITAL 640GB SATAII 3.0 GB/s |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Un paio di cose. La dichiarazione del riferimento persona e l'assegnamento a questo riferimento puoi metterli insieme
Codice:
String persona = Input.readString(); |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:38.