2013-12-05 4 views
0

Моя программа:BlueJ Magic Trick Ошибка

// By Rachit Bhargava 
// Using BlueJ 3.1.0 
import java.io.*; 
public class Magic_Trick_1 
{ 
    public static void main(String args[])throws IOException 
    { 
     InputStreamReader in=new InputStreamReader(System.in); 
     BufferedReader read=new BufferedReader(in); 
     System.out.println("Look carefully at the follwing numbers and think of one of them!"); 
     System.out.println("1 8 15"); 
     System.out.println("2 9 16"); 
     System.out.println("3 10 17"); 
     System.out.println("4 11 18"); 
     System.out.println("5 12 19"); 
     System.out.println("6 13 20"); 
     System.out.println("7 14 21"); 
     System.out.println("Now enter the row number starting from left in which your number is"); 
     char ch1, ch2, ch3, ch; 
     ch1=(char)(read.read()); 
     if(ch1=='1') 
     { 
      System.out.println("21 20 19"); 
      System.out.println("18 17 16"); 
      System.out.println("15 7 6"); 
      System.out.println(" 5 4 3"); 
      System.out.println(" 2 1 14"); 
      System.out.println("13 12 11"); 
      System.out.println("10 9 8"); 
      System.out.println("Now enter the row number starting from left in which your number is"); 
      ch2=(char)(read.read()); 
      if(ch2=='1') 
      { 
       System.out.println(" 9 12 1"); 
       System.out.println(" 4 7 17"); 
       System.out.println("20 10 13"); 
       System.out.println(" 2 5 15"); 
       System.out.println("18 21 8"); 
       System.out.println("11 14 3"); 
       System.out.println(" 6 16 19"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 2"); 
       else if(ch3=='2') 
        System.out.println("Your number is 5"); 
       else if(ch3=='3') 
        System.out.println("Your number is 15"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else if(ch2=='2') 
      { 
       System.out.println("10 13 2"); 
       System.out.println(" 5 15 18"); 
       System.out.println("21 9 12"); 
       System.out.println(" 1 4 7"); 
       System.out.println("17 20 8"); 
       System.out.println("11 14 3"); 
       System.out.println(" 6 16 19"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 1"); 
       else if(ch3=='2') 
        System.out.println("Your number is 4"); 
       else if(ch3=='3') 
        System.out.println("Your number is 7"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else if(ch2=='3') 
      { 
       System.out.println(" 9 12 1"); 
       System.out.println(" 4 7 17"); 
       System.out.println("20 8 11"); 
       System.out.println("14 3 6"); 
       System.out.println("16 19 10"); 
       System.out.println("13 2 5"); 
       System.out.println("15 18 21"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 14"); 
       else if(ch3=='2') 
        System.out.println("Your number is 3"); 
       else if(ch3=='3') 
        System.out.println("Your number is 6"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else 
       System.out.println("Invalid Input :("); 
     } 
     else if(ch1=='2') 
     { 
      System.out.println(" 7 6 5"); 
      System.out.println(" 4 3 2"); 
      System.out.println(" 1 14 13"); 
      System.out.println("12 11 10"); 
      System.out.println(" 9 8 21"); 
      System.out.println("20 19 18"); 
      System.out.println("17 16 15"); 
      System.out.println("Now enter the row number starting from left in which your number is"); 
      ch2=(char)(read.read()); 
      if(ch2=='1') 
      { 
       System.out.println("16 19 8"); 
       System.out.println("11 14 3"); 
       System.out.println(" 6 17 20"); 
       System.out.println(" 9 12 1"); 
       System.out.println(" 4 7 15"); 
       System.out.println("18 21 10"); 
       System.out.println("13 2 5"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 9"); 
       else if(ch3=='2') 
        System.out.println("Your number is 12"); 
       else if(ch3=='3') 
        System.out.println("Your number is 1"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else if(ch2=='2') 
      { 
       System.out.println("17 20 9"); 
       System.out.println("12 1 4"); 
       System.out.println(" 7 16 19"); 
       System.out.println(" 8 11 14"); 
       System.out.println(" 3 6 15"); 
       System.out.println("18 21 10"); 
       System.out.println("13 2 5"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 8"); 
       else if(ch3=='2') 
        System.out.println("Your number is 11"); 
       else if(ch3=='3') 
        System.out.println("Your number is 14"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else if(ch2=='3') 
      { 
       System.out.println("16 19 8"); 
       System.out.println("11 14 3"); 
       System.out.println(" 6 15 18"); 
       System.out.println("21 10 13"); 
       System.out.println(" 2 5 17"); 
       System.out.println("20 9 12"); 
       System.out.println(" 1 4 7"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 21"); 
       else if(ch3=='2') 
        System.out.println("Your number is 10"); 
       else if(ch3=='3') 
        System.out.println("Your number is 13"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else 
       System.out.println("Invalid Input :("); 
     } 
     else if(ch1=='3') 
     { 
      System.out.println("14 13 12"); 
      System.out.println("11 10 9"); 
      System.out.println(" 8 21 20"); 
      System.out.println("19 18 17"); 
      System.out.println("16 15 7"); 
      System.out.println(" 6 5 4"); 
      System.out.println(" 3 2 1"); 
      System.out.println("Now enter the row number starting from left in which your number is"); 
      ch2=(char)(read.read()); 
      if(ch2=='1') 
      { 
       System.out.println(" 2 5 15"); 
       System.out.println("18 21 10"); 
       System.out.println("13 3 6"); 
       System.out.println("16 19 8"); 
       System.out.println("11 14 1"); 
       System.out.println(" 4 7 17"); 
       System.out.println("20 9 12"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 16"); 
       else if(ch3=='2') 
        System.out.println("Your number is 19"); 
       else if(ch3=='3') 
        System.out.println("Your number is 8"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else if(ch2=='2') 
      { 
       System.out.println(" 1 4 7"); 
       System.out.println("17 20 9"); 
       System.out.println("12 2 5"); 
       System.out.println("15 18 21"); 
       System.out.println("10 13 3"); 
       System.out.println(" 6 16 19"); 
       System.out.println(" 8 11 14"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 15"); 
       else if(ch3=='2') 
        System.out.println("Your number is 18"); 
       else if(ch3=='3') 
        System.out.println("Your number is 21"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else if(ch2=='3') 
      { 
       System.out.println(" 2 5 15"); 
       System.out.println("18 21 10"); 
       System.out.println("13 1 4"); 
       System.out.println(" 7 17 20"); 
       System.out.println(" 9 12 3"); 
       System.out.println(" 6 16 19"); 
       System.out.println(" 8 11 14"); 
       System.out.println("Now enter the row number starting from left in which your number is"); 
       ch3=(char)(read.read()); 
       if(ch3=='1') 
        System.out.println("Your number is 7"); 
       else if(ch3=='2') 
        System.out.println("Your number is 17"); 
       else if(ch3=='3') 
        System.out.println("Your number is 20"); 
       else 
        System.out.println("Invalid Input! :("); 
      } 
      else 
       System.out.println("Invalid Input :("); 
     } 
     else 
     System.out.println("Invalid Input :("); 
     System.out.println("Did this program worked correctly? Enter 'Y' for yes and 'N' for no"); 
     ch=(char)(read.read()); 
     if(ch=='Y') 
     { 
      System.out.println("Thanks for using my program!"); 
      System.out.println("All credits go to Rachit Bhargava!"); 
     } 
     else if(ch=='N') 
     System.out.println("Please contact Rachit Bhargava in case of any error(s)"); 
     else 
     System.out.println("Invalid Input :("); 
    } 
} 

Результат на выполнение этой программы:

Look carefully at the follwing numbers and think of one of them! 
1 8 15 
2 9 16 
3 10 17 
4 11 18 
5 12 19 
6 13 20 
7 14 21 
Now enter the row number starting from left in which your number is 
2 
7 6 5 
4 3 2 
1 14 13 
12 11 10 
9 8 21 
20 19 18 
17 16 15 
Now enter the row number starting from left in which your number is 
Invalid Input :(
Did this program worked correctly? Enter 'Y' for yes and 'N' for no 
N 
Please contact Rachit Bhargava in case of any error(s) 

Это не позволяет мне войти в значение ch2 и ch3, но напрямую переходит к последнему варианту! Пожалуйста, помогите мне отладить программу! Недавно я добавил этот вопрос к codereview.stackexchange.com, но там мне сказали, чтобы этот вопрос задавался здесь для исправления ошибок!

+0

Ваша ошибка связана с использованием метода read(). На этом есть несколько вопросов. Поиск о методе readline(). –

ответ

0

Проблема здесь в том, что вы ввели 2 и нажали enter. Этот «ввод» также является символом. Таким образом, вы сразу ввели 2 символа. Попробуйте следующее:

Объявление другого персонажа: temp. Everytime вы читаете символ, вставить это:

temp=(char)(read.read()); 

для, например, когда вы читаете ch1, пишите:

ch1=(char)(read.read()); 
    temp=(char)(read.read()); 

Делайте это везде, где вы хотите, чтобы прочитать символ.

Поскольку эта проблема возникает, рекомендуется вводить символы в строку, а затем преобразовывать в символ.

Надеюсь, это поможет!