簡體   English   中英

Java Palindrome程序無法正常工作

[英]Java Palindrome program not working

嗨,我正在忙着編寫一個程序,用於檢查(在終端內)您輸入的內容是否是回文(抱歉,Variabels是荷蘭語),但我遇到的問題是即使我將String顛倒了並且在if函數中輸入應與反向輸入匹配(例如:大便),但仍然告訴我:Nee,ga naar huis的探針操作者opnieuw(翻譯:否,請重試或回家)。 現在我在家,如何解決它以提供准確的結果?

我還需要從數組中構建一個表,對顯示其值的a計數,對b的計數...等等,直到9和空格,您也可以為此向正確的方向推嗎? (雖然不需要,但實際上確實想知道我的函數出了什么問題)public static void main(String [] args){

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 );

    }

}

這是罪魁禍首

if (palin==nilap)

在Java中,不能將字符串與==進行比較。 您必須使用.equals()。

if (palin.equals(nilap))

當用==比較2個對象(字符串是Java中的對象)時,您在比較引用以查看它們是否指向內存中的同一位置。 當使用繼承的.equals()方法時,您正在比較對象的實際“有意義的值”,在這種情況下,它們是組成String的字符。

對於新的Java程序員來說,這可能是最常見的錯誤。 請參見: 如何比較Java中的字符串?

不要將字符串與==進行比較

嘗試這個:-

if (palin.equals(nilap))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM