2015-05-08 2 views
0

Итак, я довольно новичок в java, и я хотел попробовать свои силы при отладке в командной строке, а именно используя jdb для кода, который имеет пару ошибок. Я переделывал этот код:определение логической ошибки, которая вызывает опечатку

import java.util.Scanner; 
import java.io.File; 

class LetterHome{ 

    static final int MAX_CODE = 5; 

    public static void main(String[] args) throws Exception{ 
     Scanner in = new Scanner(new File(args[0])); 
     String phrase; 
     int sentenceCode, modifierCode; 

     System.out.println("Dear Mom and Dad:\n"); 


     while(in.hasNext()){ 

     sentenceCode = in.nextInt(); 
     modifierCode = in.nextInt(); 


     if((sentenceCode < 1) || (sentenceCode >= MAX_CODE)) { 
      System.out.println(sentenceCode + " is not a valid sentence code"); 
      continue; 
     } 


     if(sentenceCode == 1){ 
      if(modifierCode == 1){ 
       phrase = "great"; 
      }else if(modifierCode == 2){ 
       phrase = "ok"; 
      }else{ 
       phrase = "ERROR"; 
      } 
      System.out.println("My classes are going " + phrase + "."); 

     }else if(sentenceCode == 2){ 
      phrase = weatherModifier(modifierCode); 
      System.out.println("The weather here has been " + phrase + "."); 

     }else if(sentenceCode == 3){ 
      if(modifierCode == 1){ 
       phrase = "after the quarter ends"; 
      }else if(modifierCode == 2){ 
       phrase = "in a few weeks"; 
      }else if(modifierCode == 3){ 
       phrase = "next weekend"; 
      }else{ 
       phrase = "ERROR"; 
      } 
      System.out.println("I plan to come home for a visit " + phrase + "."); 

     }else if(sentenceCode == 4){ 
      System.out.println("Do you think you could send me $" + modifierCode + "?"); 
      System.out.println("I have to buy another book for one of my classes."); 

     }else if(sentenceCode == 5){ 
      if(modifierCode == 1){ 
       phrase = "cookies"; 
      }else if(modifierCode == 2){ 
       phrase = "stuff"; 
      }else; if(modifierCode == 3){ 
       phrase = "money"; 
      }else{ 
       phrase = "ERROR"; 
      } 
      System.out.println("Thanks for the " + phrase + " you sent."); 
     } 
     } 
    } 


    static String weatherModifier(int m) { 
     String word=null; 


     if(m == 1) 
     word = "great"; 
     if(m == 2) 
     word = "foggy"; 
     if(m == 3) 
     word = "hot"; 
     if(m == 4) 
     word = "cold"; 
     if(m == 5) 
     word = "variable"; 
     if(m<1 && m>5) 
     word = "ERROR"; 

     return word; 
    } 

} 

И я уже нашел «;» это было неуместно. Я знаю, что что-то от со значениями, назначенных членами в конце (я думаю), потому что, когда я скомпилировать программу, я получаю этот выход:

Dear Mom and Dad: 
// 
//    5 is not a valid sentence code 
//    My classes are going great. 
//    The weather here has been foggy. 
//    I plan to come home for a visit in a few weeks. 

Вместо того классов собираются «большим», я получаю «туманный», который я заметил, когда я запускал jdb. Я побежал код с помощью этого файла данных:

5 2 
1 1 
2 1 
3 2 

Самого код печатает шаблон с возможными вариантами, изложенных в файле данных, которые вы, возможно, уже заметили. Вот полный список возможностей:

//    1. My classes are going _____. 
//     1. great 
//     2. ok 
//    2. The weather here has been _____. 
//     1. great 
//     2. foggy 
//     3. hot 
//     4. cold 
//     5. variable 
//    3. I plan to come home for a visit _____. 
//     1. after the quarter ends 
//     2. in a few weeks 
//     3. next weekend 
//    4. Do you think you could send me $_____? 
//    I have to buy another book for one of my classes. 
//    5. Thanks for the _____ you sent. 
//     1. cookies 
//     2. stuff 
//     3. money 

Однако, я не уверен, что случилось с логикой кода. Какие-нибудь советы? Пожалуйста, дайте мне знать, если мне нужно внести некоторые разъяснения. Благодарю.

+0

Вместо этого используйте режим отладки в IDE –

ответ

0

Вы добавили дополнительный ; в конце if (m==2); в свою weatherModifier функцию. Убери это!

+0

. О, извините. В моем вопросе я упомянул, что я уже удалил это. Я обновлю сообщение. Есть еще одна проблема, я думаю, что имею отношение к ценностям, которые я использую ... но я не совсем уверен. –

0

Я понял вопрос, на самом деле:

Это было в "если ((sentenceCode < 1) || (sentenceCode> = MAX_CODE))"

мне пришлось изменить "> =", чтобы ">"

Смежные вопросы