【问题标题】:Java Palindrome program not workingJava回文程序不起作用
【发布时间】:2013-09-15 18:57:25
【问题描述】:

嗨,我正忙着编写一个程序来检查(在终端内)您的输入是否是回文(对不起,变量是荷兰语),但我遇到的问题是即使我将字符串反转并且在 if当输入应该与反向输入匹配时起作用(例如:便便),但它仍然告诉我:Nee,ga naar huis 的probeer opnieuw(翻译:不,再试一次或回家)。现在我回家了,我该如何解决它才能提供准确的结果?

我还需要从数组中构建一个表格,计算 a 显示它们的值,计算 b ......等等,直到 9 和空间,你也可以给我一个正确的方向吗? (虽然真的很想知道我的功能有什么问题,但不需要) 公共静态无效主要(字符串 [] 参数) {

String ui = ""; //ui = User Invoer
String palin = "";
String temp = "";
String answer = "";
int uiLength;
int klinkers = 0;
int woorden = 0;
int palinLength;
boolean zoektWoord= true; 

Scanner sui= new Scanner(System.in);
System.out.println("Voer een (echte) zin in:");
ui = sui.nextLine().trim();
uiLength = ui.length();
temp=ui.replaceAll( "[^A-Z a-z 0-9]", "");

    for (int q = 0; q< temp.length(); q++)
    {
        char aChar = temp.charAt(q);
            if (65 <= aChar && aChar<=90)
            {
                aChar = (char)( (aChar + 32) ); 
            }
        palin+=aChar;
    }

    for (int qw=0; qw<palin.length(); qw++)
    {
        if (palin.charAt(qw) == 'a'||
            palin.charAt(qw) == 'e'||
                palin.charAt(qw) == 'o'||
                palin.charAt(qw) == 'i'||
                palin.charAt(qw) == 'u')
            klinkers ++;
    }


    for (int x=0; x<palin.length(); x++)
    {       
        if (palin.charAt(x) == ' ') 
        {
        zoektWoord=true;
        }
    else{
        if(zoektWoord) woorden++;
        zoektWoord = false;

        }
    }
String nilap = new StringBuilder(palin).reverse().toString();
/*Als palin PRECIES gelijk is aan het omgekeerde DAN is het een palindroom*/
if (palin==nilap)
{
    answer="Jazeker, op de letter";
}
else 
{   
    answer="Nee, probeer opnieuw of ga naar huis";
}

    palinLength = palin.length();


System.out.println("Lengte ongefilterde zin: " + uiLength + " karakters" );
System.out.println("Gefilterde zin:\n" + palin );
System.out.println("Lengte gefilterde zin: " + palinLength + " karakters" );
System.out.println("Aantal 'woorden': \t" + woorden );
System.out.println("Aantal klinkers:\t" + klinkers );
System.out.println("Palindroom?\t" + answer );

    }

}

【问题讨论】:

    标签: java string static palindrome


    【解决方案1】:

    这条线是罪魁祸首

    if (palin==nilap)
    

    您不能在 Java 中将字符串与 == 进行比较。您必须使用 .equals()。

    if (palin.equals(nilap))
    

    当您使用 == 比较 2 个对象(并且字符串是 Java 中的对象)时,您是在比较引用以查看它们是否指向内存中的同一位置。当您使用继承的 .equals() 方法时,您正在比较对象的实际“有意义的值”,在本例中是组成字符串的字符。

    这可能是新 Java 程序员最常犯的错误。看到这个:How do I compare strings in Java?

    【讨论】:

    • 非常感谢,我不知道它是什么,而且我卡在它上面太久了!
    【解决方案2】:

    不要将字符串与== 进行比较

    试试这个:-

    if (palin.equals(nilap))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 2012-12-06
      • 2016-05-25
      • 2020-02-14
      • 2013-11-20
      相关资源
      最近更新 更多