2011-02-24 8 views
2

나는 몇 시간 동안이 일을하고 있으며, 지금은 붙어있어. 좀 도와 줘. 완전한 프로그래밍 장애입니다. 모든 메서드는 알파벳 하나를 제외하고는 잘 작동합니다.다양한 문자를 가져 오는 방법은 무엇입니까? (알파벳)

두 문자 (대문자 또는 소문자)를 받아서 주어진 char 값 범위로 구성된 문자열을 반환합니다. 메서드에 전달 된 것과 동일한 대/소문자를 유지합니다. 대문자와 소문자의 char (각각 1 개)가 메소드에 건네 졌을 경우, 대문자의 char를 소문자로 변환 해, 소문자의 범위를 사용합니다. 범위는 시작 문자와 종료 문자를 제외한 범위를 포함합니다. 또한 주어진 시작 문자 (첫 번째)가 종료 문자 (예 : 'm'및 'h')보다 큰 경우,이 범위에 문자가 없으므로 메서드는 빈 문자열을 반환합니다.

알파벳 방법으로 위의 작업을 수행하는 방법에 대한 도움을받을 수 있습니까?

import java.util.*; 

class CharacterOperations 
{ 
public static void run() 
{ 
int number=1; 
Scanner scanner = new Scanner(System.in); 
while(number > 0) 
{ 
System.out.println("(1) Insert 1 to change a letter from its lower case value to its upper case value"); 
System.out.println("(2) Insert 2 to change a letter from its upper case value to its lower case value "); 
System.out.println("(3) Insert 3 for the alphabet method (range of two letters) "); 
System.out.println("Enter a number (or negative to quit): "); 
number = scanner.nextInt(); 

if (number == 1) 
{ 
System.out.print("Enter a lower case letter: "); 
String a= scanner.next(); 
char letter = (char) a.charAt(0); 
toUpper(letter); 
} 
else if (number == 2) 
{ 
System.out.print("Enter an upper case letter: "); 
String a= scanner.next(); 
char letter = (char) a.charAt(0); 
toLower(letter); 
} 
else if (number == 3) 
{ 
System.out.print("Enter an upper case or lower case letter: "); 
System.out.print("Enter an upper case or lower case letter: "); 
String a= scanner.next(); 
char letter1 = (char) a.charAt(0); 
String b= scanner.next(); 
char letter2 = (char) b.charAt(0); 
alphabet(letter1, letter2); 
} 
} 
} 

public static char toUpper(char letter) 
{ 
int rep = ((int)letter - 32); 
char ltr = (char)rep; 
System.out.println("The letter "+ ltr + " integer representation is: " + rep); 
return (char) ((int) letter -32); 
} 

public static char toLower(char letter) 
{ 
int rep = (int)(letter + 32); 
char ltr = (char)rep; 
System.out.println("The letter " + ltr + " integer representation is: " + rep); 
return (char) ((int) letter + 32); 
} 

public static String alphabet(char letter1, char letter2){ 
int rep1 = (int)letter1; 
int rep2 = (int)letter2; 
char ltr1 = (char)rep1; 
char ltr2 = (char)rep2; 
System.out.println("The letter " + ltr1 + " integer representation is: " + rep1); 
System.out.println("The letter " + ltr2 + " integer representation is: " + rep2); 

} 
} 

고마워요!

답변

1

이 답변자는 사용자가 ASCII 세트의 표준 키보드 문자에 대해서만 이야기하고 있다고 가정합니다.

2 부르는 것들은 대한 아스키 코드를 가지고 루프를 만들 : 그들은 모두 같은 경우가 필요로

StringBuilder buf = new StringBuilder(); 

for (int i = rep1; i <= rep2; ++i) 
    buf.append((char)i); 

return buf.toString(); 

이 작동됩니다 ...

분명히
1
public static String alphabet(char letter1, char letter2) { 
    StringBuffer out = new StringBuffer();  
    for (char c = letter1; c < letter2; c++) { 
     out.append(c); 
    } 
    return out.toString(); 
} 

당신은 몇 가지를 추가해야 오류 검사 및 처리

+2

이 많이 더 효율적입니다 매우 간단합니다. 그냥 아직도 너무 많은 코드를 단일 스레드 컨텍스트에서 이전 StringBuffer 사용하여 볼 수 있으며 StringBuilder API 년 동안되었습니다 ... –

+0

나는 너무 복잡하게 만들고 싶지 않았지만 이것은 좋은 지적입니다. –

5

char을 사용하면 다음 문자를 얻을 수 있습니다.

char a = 'a'; 
a++; // now you have b 
a++; // now you have c 

시작 부분부터 끝 부분까지 이동하려면 while 루프를 수행하십시오.

+0

시나리오의 대부분 **에서 작동하는 것이 가장 좋습니다. 감사. – Rahul

-1

공공 정적 문자열의 알파벳 (문자의은 letter1, 숯불 letter2) {

는 공공 정적 "문자열"

이 문자열을 가지고이 일을해야 무효로 교체 말했기 때문에 문자열을 반환 할 것으로 예상 System.out.print로 인쇄하고 싶다면. 또는 귀하의 문자열을 반환

대문자 및 소문자로 이동에 대한 조언은 문자열로 변환하고 그냥 자바 내장 메서드를 사용하는 것이 좋습니다 옆에.

+0

질문은 반환 할 문자열을 만드는 방법을 묻습니다. –

2

임의 문자를 생성하려면 먼저 이것을 사용하십시오. 먼저 특정 범위 내에서 임의의 숫자를 생성해야합니다. 그런 다음 숫자를 가져 와서 char 변수에 저장하면 문자로 표시됩니다.

char letter = 0; 
letter = (char) (65 + (char)(Math.random() * (90 - 65) + 1)); 
2
for (char c = 'a'; c <= 'z'; c++) { 
     System.out.println(c); 
    } 

그것의 방법이 동기화되지 않기^_^여기에 중요하지만, 모두 StringBuilder를 사용하지

관련 문제