2016-06-02 6 views
0

Ich bin extrem neu in der Programmierung und beschloss, ein Programm zu erstellen, das ASCII-Zeichenfolgen in Binärzeichenfolgen und Binärzeichenfolgen in ASCII-Zeichenfolgen übersetzt. Das Problem, das ich habe, ist, dass, während das Programm erfolgreich kompiliert, es mir nicht erlaubt, die zu übersetzende Zeichenkette einzugeben, nachdem ich gewählt habe, ob ich in oder aus der Binärdatei übersetzen soll.Java Scanner Laufzeitfehler

import java.util.Scanner; 

public class Translator 
{ 
    public static void main(String[] args) 
    { 
     int valueoftype; 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter 1 if converting to binary. Enter 0 if converting from binary."); 
     valueoftype = in.nextInt(); 
     System.out.println("What is your input?"); 
     String input = in.nextLine(); 
     if(valueoftype == 1) 
     { 

      byte[] bytes = input.getBytes(); 
      StringBuilder binary = new StringBuilder(); 
      for (byte b : bytes) 
      { 
       int val = b; 
       for (int i = 0; i < 8; i++) 
       { 
        binary.append((val & 128) == 0 ? 0 : 1); 
        val <<= 1; 
       } 
       binary.append(' '); 
     } 
      System.out.println(input + " in binary is " + binary); 
     } 
     else if(valueoftype == 0) 
     { 
      StringBuilder result = new StringBuilder(); 
      for (int i = 0;i < input.length();i += 8) 
      { 
       result.append((char) Integer.parseInt(input.substring(i, i + 8), 2)); 
      } 
      System.out.println(input + "in ascii is"+ result); 
     } 
     else 
     { 
      System.out.println("Error cannot procede with incorrect value."); 
      System.out.println("Enter 1 if converting to binary. Enter 0 if converting from binary."); 
      valueoftype = in.nextInt(); 
    } 
    } 
} 

Ich habe meinen Kopf in den letzten paar Stunden wurde kratzen versuchen, genau herauszufinden, was in der Welt mit meinem Code falsch ist, hoffen ich von jemandem eine Erklärung zu bekommen.

+1

wahrscheinlich ein Duplikat. 'nextInt()' verbraucht das Zeilenumbruchzeichen nicht. Platziere 'in.nextLine()' nach deinem 'nextInt()'. – user3437460

Antwort

0

Statt String input = in.nextLine(); verwenden Sie nur String input = in.next(); und Sie können Ihren gewünschten String eingeben.

Siehe this den Unterschied

0

verstehen Sie

System.out.println("What is your input?"); 
    String input = in.next(); // Don't skip rest of the line 
    if (valueoftype == 1) { 
0

Das Problem mit nextInt ist() hinzufügen könnte. Versuchen Sie, den folgenden Code:

valueoftype = Integer.parseInt(in.nextLine()); 
System.out.println("What is your input?"); 
String input = in.nextLine(); 

Sie können auch diesen Beitrag für weitere Informationen lesen: Using scanner.nextLine()