gpt4 book ai didi

java - 寻找最长的名字

转载 作者:行者123 更新时间:2023-11-30 09:23:13 26 4
gpt4 key购买 nike

我正在尝试编写一个名为 longestName 的静态方法,它读取用户键入的名称并打印最长的名称(包含最多字符的名称)。

最长的名称应该以首字母大写和所有后续字母小写的形式打印,无论用户在输入名称时使用的是大写形式。如果两个或多个名称之间的最长名称并列,请使用最早键入的并列名称。还打印一条消息说有平局,如下面的右侧日志所示。如果一些较短的名字与长度相关,例如 DANE 和 Erik ;但不要打印消息,除非最长的名字之间并列。

public static void longestName(Scanner console, int n) {

String name = "";
String longest= "";
boolean areTies = false;
for(int i=1; i<=n; i++) {
System.out.print("Enter name #" + i + ":");
name = console.next();
if(name.length( ) > longest.length( )) {

longest = name;
areTies = false;
}
if(name.length( ) == longest.length( ) ) {
areTies = true;

}
}
// now change name to all lower case, then change the first letter
longest = longest.toLowerCase( );
longest = Character.toUpperCase (longest.charAt( 0 ) ) + longest.substring(1);

System.out.println(longest + "'s name is longest");
if(areTies==true) {
System.out.println(" (There was a tie! ) " );
}else{
System.out.println();
}

}

我的输出是:

Enter name #1:royEnter name #2:DANEEnter name #3:ErikEnter name #4:sTeFaNiEEnter name #5:LaurAStefanie's name is longest (There was a tie! ) 

It will just print there was a tie for every invokation.I have no idea why.Secondly,

longest = longest.toLowerCase( );
longest = Character.toUpperCase (longest.charAt( 0 ) ) + longest.substring(1);

我的 friend 教我用这个来检索单词,但我还是不明白。还有其他方法吗?这对我来说很复杂。

最佳答案

你的逻辑有问题。当您找到一个新的最长名称时(第一个 if 语句),您将 longest 设置为 name。然后执行第二个 if。因为此时longestname指的是同一个对象,当然他们的长度是相等的。为避免这种情况,只需插入一个 else

else if(name.length( ) == longest.length( ) ) {

让我们分解一下它是如何变成第一个字符大写,其余字符小写的。

longest = longest.toLowerCase( );

现在 longest 全部小写了。

Character.toUpperCase (longest.charAt( 0 ) )

这需要第一个字符并将其大写。

longest.substring(1);

这采用从索引 1(第二个 字符)开始到字符串末尾的子字符串,该字符串与大写字符连接。

关于java - 寻找最长的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com