第一个字母检查相似度

时间:2015-12-30 23:27:01

标签: java

该计划应该做什么:

  • 程序是看两个单词是否有相同的起始字母。

我想知道是否有人可以帮助调试此程序。

我认为我做的一切都正确,但是当我尝试运行程序时,程序会出现错误。

我看不出有什么不对。也许我的印刷课在底部,但除此之外,我没有看到任何错误。

    import static java.lang.System.*;
    import java.util.Scanner;

    public class StringFirstLetterCheck
    {
            String wordOne, wordTwo;

            public StringFirstLetterCheck()
            {
            }

            public StringFirstLetterCheck(String one, String two)
            {
                    wordOne = one;
                    wordTwo = two;
            }

            public void setWords(String one, String two)
            {
                    wordOne = one;
                    wordTwo = two;
            }

            public boolean checkFirstLetter( )
            {
                    if (wordOne.charAt(0)== wordTwo.charAt(0));

                    return true;


            }

            public String toString()
            {
                    if (wordOne.charAt(0)!= wordTwo.charAt(0))
                            return wordOne + " does not have the same first letter as " + wordTwo + "\n";

                    else if (wordOne.charAt(0)== wordTwo.charAt(0))
                            return wordOne + " does not have same first letter as " + wordTwo + "\n";

                    return ("wrong");
            }

            public static void main( String args[] )
            {
                    Scanner keyboard = new Scanner(System.in);
                    out.print("Enter word one :: ");
                    String a = keyboard.nextLine();
                    out.print("Enter word two ::");
                    String b = keyboard.nextLine();
                    StringFirstLetterCheck test = new                StringFirstLetterCheck ();
                    out.print(test);

错误讯息:

Exception in thread "main" java.lang.NullPointerException 
   at StringFirstLetterCheck.toString(StringFirstLetterCheck.java:41) 
   at java.lang.String.valueOf(Unknown Source) 
   at java.io.PrintStream.print(Unknown Source) 
   at StringFirstLetterCheck.main(StringFirstLetterCheck.java:58) 

4 个答案:

答案 0 :(得分:2)

StringFirstLetterCheck对象的构造函数缺少用于设置wordOnewordTwo实例变量的参数。相反它应该是......

StringFirstLetterCheck test = new StringFirstLetterCheck (a,b);

答案 1 :(得分:1)

好吧,你使用默认构造函数创建对象..

StringFirstLetterCheck test = new StringFirstLetterCheck ();

然后您尝试打印出自动调用toString方法的对象。此方法不会验证字段,因此它会抛出您的NullPointerException。解决这个问题的方法是使用正确的构造函数并传入正确的值。

StringFirstLetterCheck test = new StringFirstLetterCheck (a, b);

其他笔记

正如Jaskaranbir指出的那样,你的if语句语法不正确。我会更进一步说你可以简单地返回布尔表达式。

return wordOne.charAt(0) == wordTwo.charAt(0);

此外,您还有一种检查单词是否匹配的方法,因此您可以调用该方法,而不是使用toString方法复制代码。

答案 2 :(得分:1)

您应该按如下方式调用正确的构造函数:

StringFirstLetterCheck test = new StringFirstLetterCheck(a,b);

另外,:-)

    else if (wordOne.charAt(0)== wordTwo.charAt(0))
        return wordOne + " **have same** first letter as " + wordTwo + "\n";

答案 3 :(得分:0)

此代码中有更多错误:

  1. 方法checkFirstLetter有拼写错误。在那里有一个分号 if语句的结尾意味着if被忽略了 方法总是返回true。
  2. 方法checkFirstLetter和 永远不会使用setWords,应删除它们。