2017-02-11 4 views
-3

여기에 제 코드가 있습니다. 그리고 그것은 반복적으로 보입니다. 깨끗하게 보이게하는 방법이 있습니까? 감사. 그리고 내 코드는 이런 식으로해야합니다.
텍스트를 입력하십시오 : IDK를 입력하십시오. 내 BFF의 생일이야.
입력 한 내용 : IDK를 입력하십시오. 내 BFF의 생일이야.
BFF : 영원히 가장 친한 친구
IDK : 나는,java indexOf가 첫 번째 발생을 무시합니다.

import java.util.Scanner; 

public class TextMsgDecoder { 
    public static void main(String[] args) { 
     /* Type your code here. */ 
     String a = "BFF"; 
     String b = "IDK";  
     String c = "JK"; 
     String d = "TMI"; 
     String e = "TTYL"; 
     Scanner scr = new Scanner(System.in); 
     System.out.println("Enter text:"); 
     String f = scr.nextLine(); 
     System.out.println("You entered: "+ f); 

     if(f.indexOf(a)>=0) 
     System.out.println("BFF: best friend forever"); 
     if(f.indexOf(b)>=0) 
     System.out.println("IDK: I don't know"); 
     if(f.indexOf(c)>=0) 
     System.out.println("JK: just kidding"); 
     if(f.indexOf(d)>=0) 
     System.out.println("TMI: too much information"); 
     if(f.indexOf(e)>=0) 
     System.out.println("TTYL: talk to you later"); 



     return; 
    } 
} 
+3

'indexOf (...)>를'indexOf (...)> = ...'로 변경하십시오. – janos

+0

'> = 0' 또는'> -1'을 확인해야합니다. – 4castle

+0

문서를 읽는 것을 고려해야합니다. 'indexOf'가 문자열의 첫 번째 문자를 반환하는 것은 무엇입니까? 문자열 문자는 어떻게 계산됩니까? 왜 당신의 코드가 이런 일을하는지 생각한 다음'if' 문을 자세히 살펴보십시오. –

답변

0

그냥 (의견이 정리 될 수 있기 때문에) 코멘트에 무슨 말을했는지 반복 모르는

if(f.indexOf(e)>0) 

실제로해야 be

if(f.indexOf(e)>=0) 

아니면 심지어 string.contains을 사용하십시오.

세 번째 방법은 해시 테이블을 만드는 것입니다. 거친 아이디어 ("직선"자바보다는 C#을 구문에 가까운 사용을) 나는 IDE의 앞에 앉아 아니에요과 나는 전화에 쓰고 있어요,하지만 여기에 :에 훨씬 쉽게

// A C# Dictionary is a hash table 
Dictionary<string, string> dict = new Dictionary<string, string>(); 
dict.Add("BFF", "Best Friend Forever"); 
// Add the rest of the abbreviations 

// Loop over every key (abbreviation) in the hash table 
foreach (string abbreviation in dict.Keys) { 
    // If the string contains the abbreviation 
    if (f.contains(abbreviation)) { 

     Console.WriteLine(abbreviation + ": " + dict[key]); 
    } 
} 

나중에 더 많은 약어를 추가하면 읽기/더 간결합니다.