2014-07-10 1 views
-2

내 코드 하나에 문제가 있습니다. 하이픈 (-)을 반환 할 공간이 필요합니다. 지금 당장은 우주에서 돌아 오는 0이 있습니다. 누구나이 문제로 나를 도와 줄 수 있습니까? 나는 또한 네 번째 자리에 하이픈을 얻을 필요가코드를 전화 번호와 함께 올릴 때 공백을 하이픈으로 변경

import java.util.*; 
import java.lang.*; 

public class Project1 { 
    public static int getNumber(char letter) { 
    int ret = 0; 

    if (letter== 'A' || letter=='a' || letter== 'B' || letter=='b' || letter=='C' || letter=='c') { 
     return 2; 
    } 
    else if (letter== 'D' || letter=='d' || letter== 'E' || letter=='e' || letter=='F' || letter=='f') { 
     return 3; 
    } 
    else if (letter== 'G' || letter=='g' || letter== 'H' || letter=='h' || letter=='I' || letter=='i') { 
     return 4; 
    } 
    else if (letter== 'J' || letter=='j' || letter== 'K' || letter=='k' || letter=='L' || letter=='l') { 
     return 5; 
    } 
    else if (letter== 'M' || letter=='m' || letter== 'N' || letter=='n' || letter=='O' || letter=='o') { 
     return 6; 
    } 
    else if (letter== 'P' || letter=='p' || letter== 'Q' || letter=='q' || letter=='R' || letter=='r'|| letter=='S' || letter=='s') { 
     return 7; 
    } 
    else if (letter== 'T' || letter=='t' || letter== 'U' || letter=='u' || letter=='V' || letter=='v') { 
     return 8; 
    } 
    else if (letter== 'W' || letter=='w' || letter== 'X' || letter=='x' || letter=='Y' || letter=='y' || letter=='Z' || letter=='z') { 
     return 9; 
    } 
    return ret; 
    } 



    public static void main (String[] arg) { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter a 7 letter phrase: "); 
    String number = input.nextLine(); 
    for (int i = 0; i < 8; i++) { 
     System.out.print(getNumber(number.toUpperCase().charAt(i))); 
    } 


    } 
} 

:

은 여기 내 코드입니다. xxx-xxxx 여야합니다. 그러나 구문이 xxxx xxx이면 xxxx-xxx를 반환합니다. 제발 도와 다른 사람!

답변

0

ret0으로 초기화하고 공백이 포함 된 조건이 없기 때문입니다. 따라서 항상 초기 값으로 끝납니다. 그것을 확인하기 전에 character to lowercase

letter = Character.toLowerCase(letter); 

로 번역을 고려, 또한

} else if(letter == ' ') { 
    return '-'; 
} 

:

는 추가 조건을 추가합니다. 그러면 조건의 절반을 제거 할 수 있습니다.

0

아마도 "getNumber"가 Integer를 반환하기 때문에 0을 반환합니다. 그래서이 정수 함수 내부에는 'return ret'문이 있습니다. 0을 반환 중입니다.

이제 전화에서 숫자가 될 수없는 값을 "ret"로 지정하십시오. -2라고 해봅시다. 그래서 int ret = -2

이제 클라이언트에서 "-2"수신을 처리합니다. 따라서 "-2"를 받으면 "-"하이픈을 인쇄하거나 하이픈이라고 가정하십시오. 끝난. 당신은이 조건에 유용 할 것 char 등의 반환 형식을 변경할 수 있습니다

if(letter==' ') 
return '-'; 

getNumber에서

0

추가 조건().

public static char getNumber(char letter) { 
char ret = 0; 

if (letter== 'A' || letter=='a' || letter== 'B' || letter=='b' || letter=='C' || letter=='c') { 
    return '2'; 
} 
else if (letter== 'D' || letter=='d' || letter== 'E' || letter=='e' || letter=='F' || letter=='f') { 
    return '3'; 
} 
else if (letter== 'G' || letter=='g' || letter== 'H' || letter=='h' || letter=='I' || letter=='i') { 
    return '4'; 
} 
else if (letter== 'J' || letter=='j' || letter== 'K' || letter=='k' || letter=='L' || letter=='l') { 
    return '5'; 
} 
else if (letter== 'M' || letter=='m' || letter== 'N' || letter=='n' || letter=='O' || letter=='o') { 
    return '6'; 
} 
else if (letter== 'P' || letter=='p' || letter== 'Q' || letter=='q' || letter=='R' || letter=='r'|| letter=='S' || letter=='s') { 
    return '7'; 
} 
else if (letter== 'T' || letter=='t' || letter== 'U' || letter=='u' || letter=='V' || letter=='v') { 
    return '8'; 
} 
else if (letter== 'W' || letter=='w' || letter== 'X' || letter=='x' || letter=='Y' || letter=='y' || letter=='Z' || letter=='z') { 
    return '9'; 
} 
else if(letter==' ') 
return '-'; 
return ret; 

은}

+0

감사합니다! 이것은 훌륭하게 작동했습니다! – user3822460

관련 문제