2016-06-02 2 views
0

Я чрезвычайно новичок в программировании и решил создать программу, которая переводит строки ascii в двоичные строки и двоичные строки в строки ascii. Проблема, с которой я сталкиваюсь, заключается в том, что, хотя программа успешно компилируется, она не позволяет мне вводить строку, подлежащую переводу, после выбора перевода в двоичный код или из него.Ошибка Java Scanner Runtime

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(); 
    } 
    } 
} 

Я почесал голову за последние пару часов, пытаясь выяснить точно, что в мире не так с моим кодом, надеюсь, я могу получить объяснение от кого-то.

+1

вероятно дубликат. 'nextInt()' не использует символ новой строки. Поместите 'in.nextLine()' после вашего 'nextInt()'. – user3437460

ответ

0

Вместо использования String input = in.nextLine(); используйте только String input = in.next();, и вы сможете ввести желаемую строку.

См this, чтобы понять разницу

0

Вы можете добавить

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

Проблема с nextInt(). Попробуйте следующий код:

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

Вы также можете прочитать эту статью для получения дополнительной информации: Using scanner.nextLine()