Java 首字母相似性检查

Java 首字母相似性检查,java,Java,该计划应该做什么: 该程序是为了查看两个单词的起始字母是否相同 我想知道是否有人能帮忙调试这个程序 我认为我做的每件事都是对的,但是当我试着运行它时,程序出现了错误 我看不出有什么不对劲。也许我的打印类在底部,但除此之外,我没有看到任何错误 import static java.lang.System.*; import java.util.Scanner; public class StringFirstLetterCheck {

该计划应该做什么:

  • 该程序是为了查看两个单词的起始字母是否相同
我想知道是否有人能帮忙调试这个程序

我认为我做的每件事都是对的,但是当我试着运行它时,程序出现了错误

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

    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) 

那么,您可以使用默认构造函数创建对象

StringFirstLetterCheck test = new StringFirstLetterCheck ();
然后尝试打印出对象,该对象自动调用
toString
方法。此方法不会验证字段,因此会引发
NullPointerException
。解决方法是使用正确的构造函数并传入正确的值

StringFirstLetterCheck test = new StringFirstLetterCheck (a, b);
其他注释

正如Jaskaranbir所指出的,if语句语法不正确。我想进一步说,您可以简单地返回布尔表达式

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

此外,您还有一个方法来检查单词是否匹配,这样您就可以调用该方法,而不是在
toString
方法中复制代码。

好的,您可以使用默认构造函数创建对象

StringFirstLetterCheck test = new StringFirstLetterCheck ();
然后尝试打印出对象,该对象自动调用
toString
方法。此方法不会验证字段,因此会引发
NullPointerException
。解决方法是使用正确的构造函数并传入正确的值

StringFirstLetterCheck test = new StringFirstLetterCheck (a, b);
其他注释

正如Jaskaranbir所指出的,if语句语法不正确。我想进一步说,您可以简单地返回布尔表达式

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

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

您的
StringFirstLetterCheck
对象的构造函数缺少设置
wordOne
wordTwo
实例变量的参数。相反,它应该是

StringFirstLetterCheck test = new StringFirstLetterCheck (a,b);

StringFirstLetterCheck
对象的构造函数缺少设置
wordOne
wordTwo
实例变量的参数。相反,它应该是

StringFirstLetterCheck test = new StringFirstLetterCheck (a,b);

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

StringFirstLetterCheck测试=新StringFirstLetterCheck(a,b)

另外,:-)


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

StringFirstLetterCheck测试=新StringFirstLetterCheck(a,b)

另外,:-)


此代码中存在更多错误:

  • 方法
    checkFirstLetter
    有输入错误。这是一个分号 if语句的结尾,表示if被忽略,而 方法将始终返回true
  • 方法
    checkFirstLetter
    setWords
    从不使用,应该删除它们

  • 此代码中存在更多错误:

  • 方法
    checkFirstLetter
    有输入错误。这是一个分号 if语句的结尾,表示if被忽略,而 方法将始终返回true
  • 方法
    checkFirstLetter
    setWords
    从不使用,应该删除它们

  • 您为什么不帮我们添加您所说的错误文本呢?线程“main”java.lang.NullPointerException中的异常StringFirstLetterCheck.toString(StringFirstLetterCheck.java:41)中的异常位于java.lang.String.valueOf(未知源)中的异常位于java.io.PrintStream.print(未知源)中的StringFirstLetterCheck.main中的异常(未知源)(StringFirstLetterCheck.java:58)我刚才看到了一个错误,它不能解决任何问题,但下一次应该说“确实有与”相同的第一个字母:(1)请在你的问题中包含错误,而不是让我们要求。这真的应该是显而易见的。你为什么要求我们帮助你解决“错误”在不告诉我们错误是什么的情况下?同样,把它放在问题中比放在评论中更容易阅读如果错误是包含行号的堆栈跟踪,请指出哪些行包含这些行号,这样我们就不必用手指计数。如果使用IDE,您可能已经很容易地获得了这些信息。我建议您从这篇文章开始。使用选项并回答此问题(无需阅读其他注释)。同时发布重现问题所需的完整代码。您当前的代码甚至无法编译。为什么不帮我们添加您所说的错误文本?StringFirstLetterCheck.toString(StringFirstLetterCheck.java:41)中线程“main”java.lang.NullPointerException中的异常在java.io.PrintStream.print(未知源代码)的java.lang.String.valueOf(未知源代码)的StringFirstLetterCheck.main(StringFirstLetterCheck.java:58)中,我刚刚看到一个错误,它没有修复任何问题,但下一次,如果应该说“确实有与”相同的第一个字母:(1)请在你的问题中包含错误,而不是让我们要求。这确实应该是显而易见的。为什么你要求我们帮助你解决“错误”,而不告诉我们错误是什么?此外,最好将其放在问题中,这样比在评论中更具可读性。(2)如果错误是包含行号的堆栈跟踪,请指出哪些行包含这些行号,这样我们就不必用手指计数。如果使用IDE,您可能已经很容易地获得了这些信息。我建议您从这篇文章开始。使用选项并回答此问题(无需阅读其他注释)。同时发布再现问题所需的完整代码。您当前的代码甚至无法编译。