문제

그래서 나는 다음에 자바 코드를 작성해야합니다 :

  • 이름을 입력하세요
  • 제목 케이스의 형식 이름
  • 두 번째 이름 입력
  • 제목 케이스의 형식 이름
  • 알파벳순으로 표시

Java Character 클래스에는 문자열을 문자별로 검토하는 데 사용할 수 있는 isLowerCase(), isUpperCase, toLowerCase() 및 toUpperCase() 메서드가 있다는 것을 알고 있습니다.첫 번째 문자가 소문자인 경우 대문자로 변환하고, 이어지는 각 문자에 대해 해당 문자가 대문자인 경우 소문자로 변환합니다.

문제는 각 문자를 어떻게 확인하느냐는 것입니다.어떤 종류의 변수와 문자열을 포함해야 합니까?도와주실 수 있나요?

도움이 되었습니까?

해결책

문자열 조작을 처리 할 때 StringBuilder를 사용해야합니다.이 방법으로 를 덜칩니다.

StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");

s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());            

s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));

if (s1.toString().compareTo(s2.toString()) >= 0) {
    System.out.println(s2 + " " + s1);

} else {
    System.out.println(s1 + " " + s2);
}
.

다른 팁

첫 번째 문자를 대문자로 변환 한 다음 문자열의 나머지 부분을 소문자로 변환 할 수 있습니다.

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John
.

문자열 클래스 만 사용하는 문자열을 탐색하려면 문자열의 각 문자를 반복합니다.

String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size;  i++) {
    // s.charAt(i) gets the character at the ith code point.
}
.

이 질문 답변 문자열을 "변경"하는 방법 - 당신은 할 수 없습니다. StringBuilder 클래스는 특정 인덱스에서 문자를 편집하는 편리한 메서드를 제공합니다.

모든 이름이 적절하게 대문자가 있는지 확인하고 싶은 것처럼 보입니다. 예 : "Martin Ye"-> "Martin Ye", 문자열 입력을 통과하여 첫 번째 문자를 공간이 자본화 된 후 문자열 및 문자가 있습니다.

목록 알파벳순으로 모든 입력 된 이름을 ArrayList 또는 다른 컬렉션 객체에 저장하고 비교기를 구현하는 비교기를 만들고 collections.sort () ... 이즘 질문 비교 가능한 VS 비교기.

이 파일을 수정해야합니다

List<String> nameList = new ArrayList<String>();
    nameList.add(titleCase("john smith"));
    nameList.add(titleCase("tom cruise"));
    nameList.add(titleCase("johnsmith"));
    Collections.sort(nameList);
    for (String name : nameList) {
        System.out.println("name=" + name);
    }

public static String titleCase(String realName) {
    String space = " ";
    String[] names = realName.split(space);
    StringBuilder b = new StringBuilder();
    for (String name : names) {
        if (name == null || name.isEmpty()) {
            b.append(space);
            continue;
        }
        b.append(name.substring(0, 1).toUpperCase())
                .append(name.substring(1).toLowerCase())
                .append(space);
    }
    return b.toString();
}
.

String 방법이 있어요 toCharArray 새로 할당된 값을 반환합니다. char[] 그 캐릭터의.그동안 기억해 String불변, 배열 요소를 다시 할당할 수 있습니다.

비슷하게, String 생성자가 있습니다 그건 시간이 좀 걸려 char[] 새롭게 탄생한 캐릭터를 대표하는 String.

따라서 이들을 결합하면 Stringchar[], 수정 char[], 그리고 새로운 String.

이는 임의의 수의 방식으로 달성 될 수 있으며, 대부분의 요구 사항의 세부 사항으로 내려갈 수 있습니다.

그러나 기본 전제는 동일합니다.String는 불변합니다 (내용은 변경할 수 없으므로 String의 문자를 추출하고 첫 번째 문자를 대문자로 변환하고 String 배열에서 새 char를 재구성합니다.

이미 지적 된 바와 같이 이것은 상대적으로 간단합니다.

당신이해야 할 다른 일은 여러 개의 이름 (첫째, 마지막)을 하나의 패스로 처리하는 것입니다.다시 말하지만 이것은 상대적으로 간단합니다.어려운 부분은 여러 조건에서 문자열을 분할해야 할 때 발생합니다. 그러면 정규 표현식에 의지해야합니다.

여기에 매우 간단한 예입니다.

String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
    char[] chars = part.toLowerCase().toCharArray();
    chars[0] = Character.toUpperCase(chars[0]);

    sb.append(new String(chars)).append(" ");
}

name = sb.toString().trim();
System.out.println(name);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top