Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - java.lang.StringIndexOutOfBoundsException
Forum - Java - java.lang.StringIndexOutOfBoundsException

Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 15:58
Martedì, 13/04/2010
Salve :)
Con questo codice mi da errore alle righe:

Codice sorgente - presumibilmente Plain Text

  1. out.print("\nInserisci l'operatore (+, -, *, /): ");
  2. op = in.nextLine().charAt(0);



Ecco il codice:
Codice sorgente - presumibilmente Java

  1. import java.util.Scanner;
  2. import java.io.PrintStream;
  3.  
  4. public class Main {
  5.  
  6.        
  7.         public static void main(String[] args) {
  8.                
  9.                 Scanner in = new Scanner(System.in);
  10.                 PrintStream out = new PrintStream(System.out);
  11.                 Calcoli math = new Calcoli();
  12.                 int num1, num2;
  13.                 char op;
  14.                
  15.                 out.println("****************************************");
  16.                 out.println("*             CALCOLATRICE             *");
  17.                 out.println("****************************************\n");
  18.                
  19.                 out.print("Inserisci il primo numero: ");
  20.                 num1 = in.nextInt();
  21.                
  22.                 out.print("\nInserisci l'operatore (+, -, *, /): ");
  23.                 op = in.nextLine().charAt(0);
  24.                
  25.                 out.print("\nInserisci il secondo numero: ");
  26.                 num2 = in.nextInt();
  27.                
  28.                 switch (op)
  29.                 {
  30.                 case '+' : out.printf("Il risultato è: %d", math.Addizione(num1, num2)); break;
  31.                 case '-' : out.printf("Il risultato è: %d", math.Sottrazione(num1, num2)); break;
  32.                 case '*' : out.printf("Il risultato è: %d", math.Moltiplicazione(num1, num2)); break;
  33.                 case '/' : out.printf("Il risultato è: %d", math.Divisione(num1, num2)); break;
  34.                 }
  35.                
  36.  
  37.         }
  38.  
  39. }



L'errore è: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    at Main.main(Main.java:23)

Non capisco perchè :-|

Ultima modifica effettuata da Luk3 il 13/04/2010 alle 15:59
PM Quote
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Segnala al moderatore
Postato alle 18:36
Martedì, 13/04/2010
Perchè non provi a usare in.next() al posto di in.nextLine() ?

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 20:30
Martedì, 13/04/2010
Boh ma comunque funziona^^

PM Quote
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Segnala al moderatore
Postato alle 21:39
Martedì, 13/04/2010
Bè, per ottenere delle String con oggetti Scanner di solito si usa il metodo next() :k:

PM Quote