gpt4 book ai didi

Java 回文程序不工作

转载 作者:行者123 更新时间:2023-12-04 04:41:30 25 4
gpt4 key购买 nike

嗨,我正忙于编写一个程序来检查(在终端内)您的输入是否是回文(对不起,变量是荷兰语)但我遇到的问题是即使我将字符串反转并在 if 函数中输入应该与反向输入匹配(例如:poop)但它仍然告诉我: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()方法,您正在比较对象的实际“有意义的值”,在这种情况下是组成字符串的字符。

对于新的 Java 程序员来说,这可能是最常见的错误。看到这个: How do I compare strings in Java?

关于Java 回文程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816253/

25 4 0