2017-03-25 3 views
2

Ich weiß nicht, warum im 2 Fehler auf Zeichenfolgen nicht in int konvertiert werden kann.Compilation Fehler in einfachen Java-Programm mit Scanner

+1

Bitte [Bearbeiten] Ihre Frage-Thema zu sein: include a [MCVE], die das Problem dupliziert. Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht so, wie ich will?") ​​Muss Folgendes enthalten: (1) das gewünschte Verhalten, (2) ein spezifisches Problem oder einen Fehler und (3) den kürzesten Code, der für die Reproduktion erforderlich ist * in der Frage selbst *. Bitte beachten Sie auch: [Was kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) und [fragen]. Wenn der bereitgestellte Code das Problem dupliziert, müssen Sie immer noch die * genauen * Fehler, die Sie erhalten, sowie das erwartete Verhalten einschließen. – Makyen

+0

Duplizieren? [Wie man einen String in einen int in Java konvertiert] (http://stackoverflow.com/questions/5585779/how-to-convert-a-string-to-an-int-in-java) –

Antwort

12
keyboard.nextInt(); 

statt

keyboard.next(); 

Wenn Sie keyboard.next(); verwenden, dann int first-String first ändern.

Ändern Sie den Code dazu:

import java.util.*; 
public class Demo { 
    public static void main (String [] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Type your first integer: "); 
     int first = keyboard.nextInt(); 

     System.out.print("Type your seconds integer : "); 
     int second = keyboard.nextInt(); 

     System.out.print("The sum of your two integers are:" +(first+second)); 
    } 
} 

Ändern Sie Ihre Klassennamen zu einem anderen statt string.

+0

Kommentare sind nicht für ausführliche Diskussion; Diese Konversation wurde [in den Chat verschoben] (http://chat.stackoverflow.com/rooms/139096/discussion-on-answer-by-john-joe-not-compling-in-java-vim-editor). –

0

Sie sollten mit nextInt nächsten ersetzen, wie diese

int first = keyboard.nextInt(); 

Von der API können Sie die Rückgabetyp neben sehen, dass String, während nextInt() int ist.

+1

sollte es in Kommentar sein. – Omore

0

Problem ist hier:

int first = keyboard.next(); 

Scanner.next liefert String, und Sie erwarten, int, so dass Sie es mit

int first = keyboard.nextInt(); 

Neben

int second = keyboard.nextInt(); 
1

ersetzen müssen Sie können scanner.nextLine() verwenden (liest die Eingabe bis zum Ende der Zeile), was String ausgibt ut und wandelt es in int mit Integer.parseInt wie unten dargestellt:

  Scanner keyboard = new Scanner(System.in); 
      try { 
       System.out.print("Type your first integer: "); 
       int first = Integer.parseInt(keyboard.nextLine()); 
       System.out.print("Type your seconds integer : "); 
       int second = Integer.parseInt(keyboard.nextLine()); 
       int sum =first+second; 
       System.out.print("The sum of your two integers are:"+sum); 
      } catch(Exception exe) { 
       System.out.println(" Error!!!! Please try again !!!! "); 
      } finally { 
       keyboard.close(); 
      } 

Versuchen Sie auch, zu close die Ressourcen (innen finally Block, siehe oben) als Praxis.

2

Es gibt mehrere Möglichkeiten, dies zu tun, je nachdem, wie viel Validierung Sie durchführen möchten.

In der folgenden Lösung wird die erste Zahl mit .nextInt() erhalten. Beachten Sie, dass wir, wenn es sich nicht um eine ganze Zahl handelt, die Stream-Eingabe löschen müssen. Beim Aufrufen von InputMismatchException rufen wir daher .next() auf. Andernfalls würde die gleiche Ausnahme weiterhin auftreten, da die Eingabe nicht gelöscht wurde

Die zweite Zahl wird mit Hilfe von .next() erhalten, die eine Zeichenfolge zurückgibt und wir diese Zeichenfolge in die Ganzzahl umwandeln. Beachten Sie, dass wir hier eine andere Ausnahme namens NumberFormatException abfangen, um sicherzustellen, dass die Eingabe immer noch gut ist. (Wir rufen Sie nicht .next())

public static void main (String [] args) { 
    try (Scanner keyboard = new Scanner(System.in)) { 
     System.out.print("Type your first integer: "); 
     int first; 
     do { 
      try { 
       first = keyboard.nextInt(); 
       break; 
      } catch (InputMismatchException e) { 
       keyboard.next(); 
       System.out.print("Invalid first integer, try again: "); 
      } 
     } while (true); 
     System.out.print("Type your seconds integer : "); 
     int second; 
     do { 
      try { 
       second = Integer.valueOf(keyboard.next()); 
       break; 
      } catch (NumberFormatException e) { 
       System.out.print("Invalid seconds integer, try again: "); 
      } 
     } while (true); 
     System.out.print("The sum of your two integers are: " + (first + second)); 
    } 
} 

Eine letzte Sache, die ich war auf der Ressource haben versucht, auf diese Weise der Eingangsstrom unabhängig geschlossen wird, wenn das Programm normal beendet oder eine Ausnahme auslöst.

1

Sie verwenden next() -Methode aus der Scanner-Klasse. Diese Methode gibt String zurück und Sie können keine Zeichenfolge in der Variablenart int speichern. Sie können also die Methode nextInt() für die Eingabe vom Typ int verwenden oder Sie können den Wert einfach in der Variablen String speichern und anschließend die Variable String in int umwandeln.

Bitte folgen Sie diesen Code:

import java.util.*; 
public class strings { 
    public static void main (String [] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Type your first integer: "); 
     int first = keyboard.nextInt(); 
     System.out.print("Type your seconds integer : "); 
     int second = keyboard.nextInt(); 
     System.out.print("The sum of your two integers are:" +(first+second)); 
    } 
} 

oder diesen Code Folgen

import java.util.*; 
public class strings { 
    public static void main (String [] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Type your first integer: "); 
     //Get String input and stroe at String variable 
     String firstString = keyboard.next(); 
     //Convert the String variable to int 
     int first=Integer.parseInt(firstString); 
     System.out.print("Type your seconds integer : "); 
     //Get String input and stroe at String variable 
     String secondString = keyboard.next(); 
     //Convert the String variable to int 
     int second=Integer.parseInt(secondString); 
     System.out.print("The sum of your two integers are:" +(first+second)); 
    } 
} 
1

Wie andere gesagt haben, können Sie verwenden

int first = keyboard.nextInt(); 

aber Sie können auch die nächste() verwenden, Methode zusammen mit einer parseInt, die den praktischen Vorteil haben kann, eine Fehlermeldung anzuzeigen, wenn Sie möchten.

2

Scanner-Klasse next() Methode gibt Stringwert zurück. Sie können einen der folgenden Schritte ausführen, um den Kompilierungsfehler zu beheben.

  1. Sie müssen den String-Wert in int konvertieren.

    int first = Integer.parseInt(keyboard.next()); 
    
  2. können Sie nextInt() Methode verwenden, um int-Wert direkt vom Benutzer zu erhalten.

2

Dies wird die ganze Zeile konvertiert es dann zu einem Integer

int first = Integer.paresInt (keyboard.nextLine()) lesen;

oder

Wenn Sie sicher sind, Eingang in Ziffer

int first = keyboard.nextInt();

1

ändern first und second Variablen aus

int first = keyboard.next(); 
int second = keyboard.next(); 

zu

int first = keyboard.nextInt(); 
int second = keyboard.nextInt(); 
0

Versuchen Sie es mit

keyboard.nextInt(); 

nicht

keyboard.next(); 

Es zeigt an, dass es nicht konvertieren kann, weil .next für Zeichenfolgen ist, aber für andere Datentypen ist .next und dann die Datentypen mit einem Großbuchstaben.Zum Beispiel:

long l=keyboard.nextLong(); 

und boolean b=keyboard.nextBoolean();

2

ich drei Lösungen für dieses Problem:

Erste

In Ihrem Code Sie keyboard.next() verwenden, die eine Zeichenfolge zurück, die Sie haben um es in Integer umzuwandeln. Dafür können Sie keyboard.nextInt() verwenden, es konvertiert die Zeichenfolge direkt in Integer.

import java.util.Scanner; 

public class strings { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Type your first integer: "); 
     int first = keyboard.nextInt(); 
     System.out.print("Type your seconds integer : "); 
     int second = keyboard.nextInt(); 
     System.out.print("The sum of your two integers are:"+(first+second)); 
    } 
} 

Zweite

oder Sie können die Zeichenfolge in Integer zu konvertieren, indem Integer.parseInt(**String to be converted to Integer**) verwenden, wird dies die string into Integer konvertieren.

import java.util.Scanner; 

public class strings { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Type your first integer: "); 
     int first = Integer.parseInt(keyboard.next()); 
     System.out.print("Type your seconds integer : "); 
     int second = Integer.parseInt(keyboard.next()); 
     System.out.print("The sum of your two integers are:"+(first+second)); 
    } 
} 

Dritte

oder Sie können die Zeichenfolge in Integer zu konvertieren, indem Integer.valueOf(**String to be converted to Integer**) verwenden, wird dies die string into Integer konvertieren.

import java.util.Scanner; 

public class strings { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Type your first integer: "); 
     int first = Integer.valueOf(keyboard.next()); 
     System.out.print("Type your seconds integer : "); 
     int second = Integer.valueOf(keyboard.next()); 
     System.out.print("The sum of your two integers are:"+(first+second)); 
    } 
} 
+0

Wenn Sie diese (oder irgendeine) Antwort als hilfreich empfunden haben, aktualisieren Sie sie bitte. Wenn dies Ihre Frage beantwortet hat, markieren Sie diese als akzeptierte Antwort. Vielen Dank! –

+0

Obwohl Sie Code-Beispiele zur Verfügung gestellt haben, haben Sie keine Erklärung gegeben, wie Sie das Problem oder das Problem mit dem ursprünglichen Code-Snippet gelöst haben. Als Ergebnis ist Ihre Antwort nicht von sehr guter Qualität. – pczeus

+0

aktualisierte meine Antwort. Danke für die Information! :) –

0

keyboard.next() die nächsten vollständigen Token vom Scanner zurückzukehren, denke ich an String-Typ, so dass es typisieren werden muss, um integer und bessere Option ist keyboard.nextInt() Methode zu verwenden, um die zu übernehmen ganzzahlige Eingabe

0

haben Sie Ihren Code dies ändern:

import java.util.*; 
public class strings { 
    public static void main (String [] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Type your first integer: "); 
     int first = keyboard.nextInt(); 
     System.out.println("Type your seconds integer : "); 
     int second = keyboard.nextInt(); 
     System.out.print("The sum of your two integers are:"+(first+second)); 
    } 
} 
Verwandte Themen