ユーザーが入力した名前を読み取り、最長の名前 (最も多くの文字を含む名前) を出力する、longestName という名前の静的メソッドを作成しようとしています。
最長の名前は、ユーザーが名前を入力するときに使用した大文字と小文字に関係なく、最初の文字を大文字にし、その後のすべての文字を小文字にして印刷する必要があります。2 つ以上の名前の間で最長が同点の場合は、最も早く入力された同点の名前を使用します。また、下の右のログのように、同点だったことを示すメッセージを出力します。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();
}
}
私の出力は次のとおりです。
名前を入力 #1:ロイ 名前を入力 #2:DANE 名前を入力 #3:エリック 名前を入力 #4:sTeFaNiE 名前を入力 #5:LaurA ステファニーの名前が一番長い (同点でした!)
呼び出しごとに引き分けがあったと表示されるだけです。理由はわかりません。第二に、
longest = longest.toLowerCase( );
longest = Character.toUpperCase (longest.charAt( 0 ) ) + longest.substring(1);
友達がこれを使って単語を検索する方法を教えてくれましたが、まだ理解できません。他の方法はありますか?それは私にとって非常に複雑です。