2013-11-25 101 views
0

此代码似乎完全正常,我(CS101),但我的IDE抛出了错误“此方法必须返回boolean类型的结果”正确的代码不会编译?

我不希望在如何简化我的代码或类似的东西任何提示只是想现在解决的原因/解决方案,为什么发生这种情况

public static boolean validation(String correct1, String correct2) 
{ 
    Scanner in = new Scanner(System.in); 

    boolean correctInput = false; 
    String userInput; 

    while (correctInput == false) 
    { 
     System.out.print("Type in " + correct1 + " or " + correct2); 
     userInput = in.next(); 

     if (userInput.equals(correct1)) 
     { 
      return true; 
     }else if (userInput.equals(correct2)) 
     { 
      return false; 
     }else 
     { 
      System.out.println("Try again!"); 
     } 
    } 
} 

问题,有兴趣的人,为什么我需要低于这个全码:

import java.util.*; 
public class CheckingInput 
{ 
public static void main(String args[]) 
{ 
    System.out.println("What is 1+1?"); 
    boolean answer = validation("two", "three"); 
    if(answer == true) 
    { 
     System.out.print("Correct!"); 
    }else if(answer == false) 
    { 
     System.out.print("Wrong!"); 
    } 
} 

public static boolean validation(String correct1, String correct2) 
{ 
    Scanner in = new Scanner(System.in); 
    boolean correctInput = false; 
    String userInput; 

    while (correctInput == false) 
    { 
     System.out.print("Type in " + correct1 + " or " + correct2 + ": "); 
     userInput = in.next(); 

     if (userInput.equals(correct1)) 
     { 
      correctInput = true; 
      return true; 

     }else if (userInput.equals(correct2)) 
     { 
      correctInput = true; 
      return false; 
     }else 
     { 
      System.out.println("Try again!"); 
      correctInput = false; 
     } 
    } 
    return false;// Doesn't really matter, loop will never reach here 
} 
+3

然后,它是不正确的。你的代码是否在**全**的情况下返回一个布尔值? –

+0

在另一个说明中,为什么使用'=='而不是'.equals('用于字符串? – hexafraction

+0

我想要做的是重复while循环,直到满足两个if语句中的一个并返回一个值?,而不是退出,直到他们,我要对这个错误的方式 – Chris

回答

1

我假设的无限循环是故意的,因为你在等待用户的响应,那么请尝试以下操作:

public static boolean validation(String correct1, String correct2) 
{ 
    Scanner in = new Scanner(System.in); 
    String userInput; 

    while (true) 
    { 
     System.out.print("Type in " + correct1 + " or " + correct2); 
     userInput = in.next(); 

     if (userInput.equals(correct1)) 
     { 
      return true; 
     } 
     else if (userInput.equals(correct2)) 
     { 
      return false; 
     } 
     else 
     { 
      System.out.println("Try again!"); 
     } 
    } 

    return false; // Doesn't really matter, loop will never reach here 
} 
+0

这工作,我知道这会不会拿出在实践中,但我的演讲者试图让我们去实践验证的技术,我们不知道他是愚蠢的问题,傻代码 – Chris

0

一个return true;return false语句在函数结束之前缺少,以防循环退出。

+0

我不希望循环退出,直到两个if语句中的一个被满足并且返回一个值。 – Chris