2017-02-22 4 views
0

In Java, wie, wenn möglich, kann ich numerische Scanner-Eingabe (wie 2 oder 87) in eine Integer-Variable konvertieren? Was ich verwende liefert nun die Fehlermeldung:Wie konvertiere ich die Scannereingabe in eine Ganzzahl?

Exception in thread "main" java.lang.NumberFormatException: null 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.valueOf(Unknown Source) 
    at diDecryption.Didecryption.main(Didecryption.java:226) 

Und das ist der Code verwende ich es zu tun (zusammen genäht, es ist Teil eines viel größeren Programms ist):

System.out.println("Enter first number"); 
    Scanner sc=new Scanner(System.in); 
    String name=sc.next(); 
    int result = Integer.valueOf(name); 
    if (result/2 == 1){ 
    System.out.println("a"); 

Der Zweck des Programms ist es, eine verschlüsselte Nachricht zu dekodieren. Die Eingabe ist numerisch, und wenn ich die Zeichenfolge in den int-Konverter entferne, funktioniert die Division nicht. Wie behebe ich das?

+0

Ihre Code funktioniert gut für mich, wenn ich ihm eine Nummer gebe. Was genau liefern Sie als Input für System in? (Die von Ihnen gepostete Fehlermeldung zeigt an, dass Sie versuchen, 'null' zu analysieren.) – azurefrog

+0

Was ist Ihre Eingabe? Der Code sieht gut aus für mich. http://ideone.com/omNdEF –

+2

Ich bezweifle, dass Ihre Ausnahmebedingungsnachricht mit Ihrem Code übereinstimmt. Scannermethoden geben nicht null zurück. Sie werden eine Ausnahme auslösen, wenn nichts zu lesen ist. Bitte geben Sie eine [MCVE] an. – Tom

Antwort

0
System.out.println("Enter first number"); 
Scanner sc=new Scanner(System.in); 
String name=sc.next(); 
int result = Integer.parseInt(name); 
if (result/2 == 1){ 
System.out.println("a"); 

ParseInt wechselt sie in einem primitiven int eher als ein Integer-Objekt

+3

Das macht keinen Unterschied, Java ist froh, die von 'valueOf()' zurückgegebene 'Integer' zu entpacken. – azurefrog

+0

@azurefrog true aber ihr Code scheint für mich zu funktionieren –

0

Wenn Sie Ihre Eingabe numerisch ist, ist es besser, direkt die Methode verwenden

sc.nextInt(); 
+0

Das ist eindeutig nicht konvertieren. Aber ich verstehe deine Idee –

0

In Ihrem stacktrace Sie haben null als Parameter in Integer.valueOf(name). Scheint, dass Ihre Konsole eine ungültige Eingabefolge erzeugt. Versuchen Sie es mit sc.hasNext() Zustand zu überprüfen:

System.out.println("Enter first number"); 
    Scanner sc = new Scanner(System.in); 
    if (sc.hasNext()) { 
     String name = sc.next(); 
     int result = Integer.parseInt(name); 
     if (result/2 == 1) { 
      System.out.println("a"); 
     } 
    } 
0

System.out.println("Enter first number"); 
Scanner sc=new Scanner(System.in); 
int name=sc.nextInt(); 
if ((name/2) == 1) 
System.out.println("a"); 

RUN

run: 
Enter first number 
2 
a 
0

diesen Code Versuchen Versuchen

package exmaple; 

import java.util.Scanner; 

public class Parser { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 

     String name = in.next(); 

     try{ 
      int result = Integer.parseInt(name); 
      if(result/2 == 1) { 
       System.out.println("a"); 
      } 

     } catch(Exception exception) { 

     } 
     in.close(); 
    } 

} 
Verwandte Themen