Итак, я довольно новичок в 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
Однако, я не уверен, что случилось с логикой кода. Какие-нибудь советы? Пожалуйста, дайте мне знать, если мне нужно внести некоторые разъяснения. Благодарю.
Вместо этого используйте режим отладки в IDE –