2015-04-12 243 views
0

我在我的if else语句中遇到了问题。如果 - else语句

String[] keywords = { "day", "What book", "office", "hour", 
      "e-mail" }; 

    Scanner scanner = new Scanner(System.in); 
    String input = null; 
    /* -end init- */ 

    System.out.println("Welcome "); 
    System.out.println("What's on your mind?"); 
    do { 
     System.out.print("> "); 
     input = scanner.nextLine().toLowerCase(); 
     for (String keyword : keywords) { 

      if (input.contains(keyword)) { 
       parseFile(keyword); 

      } 

      else { 
       Writer(); 

      } 
     } 
     break; 
    } while (input.equalsIgnoreCase("bye")); 
    System.out.println("Have a good day!"); 

} 
} 

由于某种原因,第一个IF语句被忽略。有人可以给我一些建议。谢谢

+0

你的输入是什么?什么是关键字?它不是“被忽略”,它可能总是“错误的” –

+0

@OriLentz第二个执行。这意味着它并不总是假的。 – CKing

+0

可能有两个原因,要么控制没有进入for循环,要么if中提到的条件是false,需要更多的代码来了解 –

回答

1

我试着运行该程序,它运行良好。如果假设我输入了day作为输入。然后它进入if一次和其他内部(关键字-1的长度)时间。请检查您是否输入了与关键字数组中给定的值相同的值。

package myApp; 

import java.util.Scanner; 

public class Client{ 
    public static void main(String[] args) { 
     String[] keywords = { "day", "Cs 377", "What book", "office", "hour", 
       "e-mail", "name", "major", "student e-mail", "group id", 
       "lectures", "lecture room", "lecture time", 
       "number of lectures", "current lecture", 
       "topics of current lecture", "number of test", 
       "date of a test", "number of assignments", "sure", 
       "current assignment", "due day" }; 

     Scanner scanner = new Scanner(System.in); 
     String input = null; 
     /* -end init- */ 

     System.out.println("Welcome "); 
     System.out.println("What's on your mind?"); 
     do { 
      System.out.print("> "); 
      input = scanner.nextLine().toLowerCase(); 
      for (String keyword : keywords) { 

       if (input.contains(keyword)) { 
        System.out.println("KEYWORD:" + keyword); 
        break; 
       } 

       else { 
        System.out.println("KEYWORD not found"); 

       } 
      } 
      break; 
     } while (input.equalsIgnoreCase("bye")); 
     System.out.println("Have a good day!"); 

    } 
} 

我更换了一些东西里面,如果和其他与sysout。 我在输入一天输入并得到以下结果。

Welcome 
What's on your mind? 
> day 
KEYWORD:day 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
KEYWORD not found 
Have a good day! 

这个输出很好理解。如果您觉得困难,请在下面评论您所面临的问题。

+0

我的问题是一次循环。如果发现一天,打印日之后再度过一个美好的一天。没有找到其他日期sysout关键字未找到 – ONSight

+0

因此,在for循环中只有一个“If”语句并且在for循环外有另一个if语句来检查是否找不到?例如\t(字符串关键字:关键字){ \t \t \t \t found = true; \t \t \t \t如果(input.contains(关键字)){ \t \t \t \t \t parseFile(关键字); \t \t \t \t \t // break; \t \t \t \t} \t \t \t} \t \t \t \t如果(找到了!){ \t \t \t \t \t作家(); \t \t \t \t // break; \t \t \t \t} – ONSight

+0

只是在循环的条件下放了一个break。 –

2

使用map会减少整个数组的循环,每次检查是否。

+0

好吧,所以我是新来的这个,如何地图会使这更容易吗? – ONSight

+0

我错过了我认为你在数组中搜索一个单词的逻辑,但是你正在检查数组中的任何世界是否匹配用户输入,注意HashMap提供了基本操作的恒定性能(get和put )。 – pssh