如何只打印别而不是if?

时间:2015-02-18 17:34:25

标签: java eclipse

所以我刚刚下载了Eclipse,目前我正在9年级的计算机编程课程中,所以我不太了解。我在课前编码,所以我有点领先。我今天生病了,发现了Eclipse,我开始使用它并测试它。这也是为什么你会在那里看到Hello World语句的原因。我被带走并开始制作更多代码。我想在我的代码中添加一些if语句,但我不确定如何正确使用它们。在

    System.out.println("So your name is... " + name + ". Right?");
    yes = scan.nextLine();

    if ("Yes" != null)
    {
        System.out.println("Great!");

     if ("No" != null)
        {
            System.out.println("Oh. Please retype it.");
            no = scan.nextLine();
        }
    }

我不知道为什么,但输出是,Hello World! 请输入您的姓名 - > 贾斯汀 请输入您的年龄 - > 15 请输入您出生的那一年 - > 1999年 所以你的名字是......贾斯汀。对? 没有 大! 哦。请重新输入。

你可以看到我输入了no,但它仍然给了我回报,好像我也输入了Yes。我怎样才能解决这个问题?提前谢谢!

import java.util.Scanner;
public class helloworld_main {
private static Scanner scan;

public static void main(String args[])
{
    System.out.println("Hello World!");


    scan = new Scanner(System.in);
    String name, age, year, yes, no;

    System.out.println("Please enter your name --> ");
    name = scan.nextLine();

    System.out.println("Please enter your age --> ");
    age = scan.nextLine();

    System.out.println("Please enter the year you were born --> ");
    year = scan.nextLine();

    System.out.println("So your name is... " + name + ". Right?");
    yes = scan.nextLine();

    if ("Yes" != null)
    {
        System.out.println("Great!");

     if ("No" != null)
        {
            System.out.println("Oh. Please retype it.");
            no = scan.nextLine();
        }
    }

    System.out.println("The age you entered is..." + age + ". Right?");
    System.out.println("The year you were born is... " + year + ". Right?");
    scan.close();

}

}

3 个答案:

答案 0 :(得分:3)

问题在于以下代码:

if ("Yes" != null)
    {
        System.out.println("Great!");

     if ("No" != null)
        {
            System.out.println("Oh. Please retype it.");
            no = scan.nextLine();
        }
    }

请改为尝试:

if ("Yes".equals(yes)) {
        System.out.println("Great!");
} else {
        System.out.println("Oh. Please retype it.");
        no = scan.nextLine();
}

虽然这可以解决您的问题,但它无法实现您的目标。一旦用户输入了错误的名称,您希望他再次输入该名称并再次询问他是否是他的正确名称。你不想继续这样做,直到用户键入"是"。这给你一个线索。使用do-while循环。

答案 1 :(得分:0)

条件("Yes" != null)始终为true。请注意"是"是一个String,显然不是null。

如果要检查变量yes的值,请尝试

if (yes.equals("Yes")) ...

答案 2 :(得分:0)

验证“是”时,您不是指yes变量。

System.out.println("So your name is... " + name + ". Right?");
yes = scan.nextLine();

if ("Yes" != null)
{
    System.out.println("Great!");

 if ("No" != null)
    {
        System.out.println("Oh. Please retype it.");
        no = scan.nextLine();
    }
}

您实际上正在创建具有值Yes和No的新String对象,并检查它们是否为空,它们永远不会。

你想做的是

System.out.println(“所以你的名字是......”+名字+“。对吧?”);     是= scan.nextLine();

if (yes != null)
{
    System.out.println("Great!");

 if (no != null)
    {
        System.out.println("Oh. Please retype it.");
        no = scan.nextLine();
    }
}

你的节目不合逻辑,我想你真正想要的是

Scanner sc = new Scanner(System.out);
String result = sc .nextLine();

do
{
    if("Yes".equals(result))
    {
        System.out.println("Great!");
    }
    else if ("No".equals(result))
    {
        System.out.println("Oh. Please retype it.");
        result = sc.nextLine();
    }
} while(!"Yes".equals(result));