为什么这个空白?

时间:2013-10-23 08:16:45

标签: java

这是我们老师给我们的一个文字库,我应该返回最长的单词,其中只包括键盘顶行的字符。目前它返回空白。请帮忙。

//What's the longest word only using the top row of the keyboard?      
   public static void Question6() {  

      String longestWordSoFar = " ";
      System.out.println("Question 6:");
      for(int i = 1; i < WordList.numWords(); i++) // check every word in wordlist
      {
          if(topRow(WordList.word(i))) { // if the length is greater than the previous word, replace it
          {  
              if(WordList.word(i).length() > longestWordSoFar.length())            
                  longestWordSoFar=WordList.word(i);
              }      
          }

      }
      System.out.println("longest word including top row: " + longestWordSoFar);
      System.out.println();
      return;
   }

public static boolean topRow(String word) {

       for(int i = 0; i < word.length(); i++) {
       //return true if the word has all of the letters in the top row of the keyboard
               if (word.charAt(i) != 'q') {
               return false;
               }
               if (word.charAt(i) != 'w') {
               return false;
               }
               if (word.charAt(i) != 'e') {
               return false;
               }
               if (word.charAt(i) != 'r') {
               return false;
               }
               if (word.charAt(i) != 't') {
               return false;
               }
               if (word.charAt(i) != 'y') {
               return false;
               }
               if (word.charAt(i) != 'u') {
               return false;
               }
               if (word.charAt(i) != 'i') {
               return false;
               }
               if (word.charAt(i) != 'o') {
               return false;
               }
               if (word.charAt(i) != 'p') {
               return false;
               }   
        }
        return true;
   }

5 个答案:

答案 0 :(得分:5)

你的功能topRow没有做你想要的。如果单词中的任何字符不是qwerty,则会返回false, uiop 同时。这永远不会成真。

答案 1 :(得分:5)

改为使用 正则表达式 。如果sString类型,请使用

s.matches("[qwertyuiop]+")

匹配顶部键盘行上的一个或多个字母。我会对你不区分大小写。

P.S。打赌答案是“打字机”。

答案 2 :(得分:1)

让我们走这条路

if (word.charAt(i) != 'q') {
   return false;
}
if (word.charAt(i) != 'w') {
   return false;
}

现在,如果当前字符(word.charAt(i))是'q'会发生什么?如果是'w'会发生什么?在任何其他情况下会发生什么?

答案 3 :(得分:1)

您的topRow()方法将始终返回false,因为您的单词的每个字符必须同时是顶行的每个字符(这是不可能的)才能返回{{1} }。尝试使用正则表达式。

答案 4 :(得分:1)

我错了,或者你的函数总是在第一个字符处返回?