2013-09-11 107 views
0

在Java完成noob这里。学校刚刚开始,我正在参加APCS。我们的老师向我们展示了这个叫Scanner的酷班,但他还没有教过我们。我觉得这很酷,所以我决定更多地研究它。在我做了一些小小的研究之后,我发现它基本上可以让你将用于系统的信息转化为代码。我试图用这个代码制作我自己的小程序。这个想法很简单。BlueJ错误:不兼容的类型

  1. 要求用户输入他的名字。

  2. 收到用户的名字后,请他确认是否是他的名字(没有拼写错误,名称错误等)。

  3. 使用if/else语句,如果是:打印一个谢谢。如果不是:打印一个随机串取笑他。

此时我打算使用if和else语句。这是我们作为一个班级尚未涵盖的内容。输入我的if else语句后,我收到编译时错误。下面是BlueJ的递给我:

incompatible type

这是代码:

public class useInfo 
{ 
public static void main(String[] args) 
{ 
    String firstName; 
    String verifyFirstName; 
    Scanner keyboardInput = new Scanner(System.in); 
    Scanner verification = new Scanner(System.in); 
    System.out.print("Please Enter your first name here --->"); 
    firstName = keyboardInput.nextLine(); 
    System.out.println("Thank you! Your first name is " + firstName + " , correct?"); 
    keyboardInput.close(); 
    verifyFirstName = verification.nextLine(); 
    if (verifyFirstName = "Yes") //this is the section I get the error on. RIGHT HERE. 
    { 
     System.out.println("Great! Thanks for you time."); 
    } 
    else 
    { 
     System.out.println("You need to get your stuff together. How can you not even type your own name correctly?"); 
    } 
} 
} 

回答

1

这是一个assignment操作。

verifyFirstName = "Yes" 

它不检查,看看verifyFirstName等于“是”,它的设置它等于“是”。

您收到错误“不兼容的类型”,因为if语句期望的结果为布尔值truefalse。你放在圆括号里的任务评估为一个字符串。您需要将您的字符串值与equals方法进行比较。

if (verifyFirstName.equals("Yes")) { 
    ... 
} 
+0

我真是个白痴。非常感谢,并为此感到抱歉。 Noob这样的问题一定很烦人。 –

+2

@AbdiAbdalla这是每个学习Java的人至少做过一次的错误之一。别想它了。 –

0

像比尔说的,这是一个布尔值,而你把赋值操作符。

但是,大多数人认为犯这样的错误,通常使用=时,他们的意思是==

这是一个特殊情况,因为一个字符串是一个对象,所以你可以使用.equals。如果您使用的原语(数字)你会使用==

如:

if(2 + 3 == 5) { 
System.out.println("Great! Thanks for your time."); 
}