사용자가 입력 한 이름을 읽고 가장 긴 이름 (대부분의 문자가 들어있는 이름)을 인쇄하는 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();
}
}
내 출력은 다음과 같습니다 그것은 단지 모든 invokation.I의 넥타이가 있었다 인쇄됩니다
Enter name #1:roy Enter name #2:DANE Enter name #3:Erik Enter name #4:sTeFaNiE Enter name #5:LaurA Stefanie's name is longest (There was a tie!)
이유를 모르겠어요. 둘째 ,
longest = longest.toLowerCase();
longest = Character.toUpperCase (longest.charAt(0)) + longest.substring(1);
내 친구는 단어를 검색하려면이 옵션을 사용하도록 가르쳐하지만 난 여전히 understand.Is 그것을하는 다른 방법을 해달라고? 그것은 나를 위해 매우 복잡하다.
고마워요. 이해했습니다! – user2179615
나는 캐릭터가 어떻게 작동하는지에 익숙하지 않다. 코드에서 나온 캐릭터,이 경우에는 첫 글자가 맞다. 아파를 더 잘 이해하려고 노력했다. 캐릭터 아래있다. 유니크 블록? – user2179615
아니요, 'longest.charAt (0)'은 첫 번째 문자를 나타냅니다. static 메소드'Character.toUpperCase'는'char'을 취해 대문자'char'를 리턴합니다. 연결하면 Java는 연결하기 전에 대문자로 된'char'을'String'으로 변환 할만큼 똑똑합니다. – rgettman