以网站为键盘输入?

时间:2016-11-06 18:40:36

标签: java

这是我给出的问题: 编写一个程序,将网站名称作为键盘输入,直到用户输入单词' stop'。该程序还计算了有多少网站名称是商业网站名称(即以.com结尾),以及计数的输出。

持续发生的问题即使我输入单词stop作为输入,它仍然会说"进入下一个站点。"我不确定我哪里出错了。

有人可以帮忙吗?这是我的代码。

import java.util.Scanner;


public class NewClass 
{
 public static void main( String [] args)

{

    int numberOfComSites = 0;
    String commercialNames = "com";
    final String SENTINEL = "stop";
    String website;

    Scanner scan = new Scanner(System.in);
    System.out.print("Enter a website, or 'stop' to stop > ");
    website = scan.next();

    String substring = website.substring(website.length()-3);

    while (website != SENTINEL)
    {
        if(substring == commercialNames)
        { numberOfComSites++;
        }
        System.out.print( "Enter the next site > ");
        website = scan.next();
    }

         System.out.println( "You entered" + numberOfComSites + "commercial websites.");
        }




}

谢谢!

2 个答案:

答案 0 :(得分:0)

替换

while (website != SENTINEL)

while(!website.equals(SENTINEL))

website属于String类型,不是原始类型。因此,您需要使用equals方法来比较String==用于参考比较。

  

有关详细信息What is the difference between == vs equals() in Java?

,请参阅此处

答案 1 :(得分:0)

您正在使用引用相等==来比较字符串。你的字符串来自不同的来源。 SENTINEL来自常量池,而website来自用户输入。它们总是不同的参考。

要按值比较字符串,应使用equals方法。在你的情况下,你应该替换

while (website != SENTINEL)

通过

while (!SENTINEL.equals(website))

请注意,我们将常量与用户输入进行比较。这可以在websitenull时解决问题。在您的代码中并非如此,但它是良好风格的标志。

有关详细信息,请参阅What is the difference between == vs equals() in Java?