2013-12-16 60 views
0

所以最近發生的是這段代碼,這段代碼太長了。有什麼辦法可以簡單的方式製作這段代碼嗎?我是一個菜鳥和一個朋友問我,他沒有任何帳戶要問,所以我就問我的,我真的不擅長編碼,請幫助!(我欠他的)Scrabble ACSL java編碼

Scanner input = new Scanner(System.in); 

    System.out.println("Enter the word:"); 
    String firstLetter = input.next(); 
    String secondLetter = input.next(); 
    String thirdLetter = input.next();; 
    String lastLetter = input.next();; 
    int valOfFirstLetter = 0; 
    int valOfSecondLetter = 0; 
    int valOfThirdLetter = 0; 
    int valOfLastLetter = 0; 



    if (firstLetter.equals("a")) 
     valOfFirstLetter = valOfFirstLetter + 1; 
    else if (firstLetter.equals("e")) 
     valOfFirstLetter = valOfFirstLetter + 1; 
    else if (firstLetter.equals("d")) 
     valOfFirstLetter = valOfFirstLetter + 2;   
    else if (firstLetter.equals("r")) 
     valOfFirstLetter = valOfFirstLetter + 2; 
    else if (firstLetter.equals("b")) 
     valOfFirstLetter = valOfFirstLetter + 3; 
    else if (firstLetter.equals("m")) 
     valOfFirstLetter = valOfFirstLetter + 3; 
    else if (firstLetter.equals("v")) 
     valOfFirstLetter = valOfFirstLetter + 4; 
    else if (firstLetter.equals("y")) 
     valOfFirstLetter = valOfFirstLetter + 4; 
    else if (firstLetter.equals("j")) 
     valOfFirstLetter = valOfFirstLetter + 8; 
    else if (firstLetter.equals("x")) 
     valOfFirstLetter = valOfFirstLetter + 8; 
    else 
     System.out.println("NOOOOOOO"); 

    System.out.println(valOfFirstLetter); 


    if (secondLetter.equals("a")) 
     valOfSecondLetter = valOfSecondLetter + 1; 
    else if (secondLetter.equals("e")) 
     valOfSecondLetter = valOfSecondLetter + 1; 
    else if (secondLetter.equals("d")) 
     valOfSecondLetter = valOfSecondLetter + 2;  
    else if (secondLetter.equals("r")) 
     valOfSecondLetter = valOfSecondLetter + 2; 
    else if (secondLetter.equals("b")) 
     valOfSecondLetter = valOfSecondLetter + 3; 
    else if (secondLetter.equals("m")) 
     valOfSecondLetter = valOfSecondLetter + 3; 
    else if (secondLetter.equals("v")) 
     valOfSecondLetter = valOfSecondLetter + 4; 
    else if (secondLetter.equals("y")) 
     valOfSecondLetter = valOfSecondLetter + 4; 
    else if (secondLetter.equals("j")) 
     valOfSecondLetter = valOfSecondLetter + 8; 
    else if (secondLetter.equals("x")) 
     valOfSecondLetter = valOfSecondLetter + 8; 
    else 
     System.out.println("NOOOOOOO"); 

    System.out.println(valOfSecondLetter); 


    if (thirdLetter.equals("a")) 
     valOfThirdLetter = valOfThirdLetter + 1; 
    else if (thirdLetter.equals("e")) 
     valOfThirdLetter = valOfThirdLetter + 1; 
    else if (thirdLetter.equals("d")) 
     valOfThirdLetter = valOfThirdLetter + 2;   
    else if (thirdLetter.equals("r")) 
     valOfThirdLetter = valOfThirdLetter + 2; 
    else if (thirdLetter.equals("b")) 
     valOfThirdLetter = valOfThirdLetter + 3; 
    else if (thirdLetter.equals("m")) 
     valOfThirdLetter = valOfThirdLetter + 3; 
    else if (thirdLetter.equals("v")) 
     valOfThirdLetter = valOfThirdLetter + 4; 
    else if (thirdLetter.equals("y")) 
     valOfThirdLetter = valOfThirdLetter + 4; 
    else if (thirdLetter.equals("j")) 
     valOfThirdLetter = valOfThirdLetter + 8; 
    else if (thirdLetter.equals("x")) 
     valOfThirdLetter = valOfThirdLetter + 8; 
    else 
     System.out.println("NOOOOOOO"); 

    System.out.println(valOfThirdLetter); 

    if (lastLetter.equals("a")) 
     valOfLastLetter = valOfLastLetter + 1; 
    else if (lastLetter.equals("e")) 
     valOfLastLetter = valOfLastLetter + 1; 
    else if (lastLetter.equals("d")) 
     valOfLastLetter = valOfLastLetter + 2;  
    else if (lastLetter.equals("r")) 
     valOfLastLetter = valOfLastLetter + 2; 
    else if (lastLetter.equals("b")) 
     valOfLastLetter = valOfLastLetter + 3; 
    else if (lastLetter.equals("m")) 
     valOfLastLetter = valOfLastLetter + 3; 
    else if (lastLetter.equals("v")) 
     valOfLastLetter = valOfLastLetter + 4; 
    else if (lastLetter.equals("y")) 
     valOfLastLetter = valOfLastLetter + 4; 
    else if (lastLetter.equals("j")) 
     valOfLastLetter = valOfLastLetter + 8; 
    else if (lastLetter.equals("x")) 
     valOfLastLetter = valOfLastLetter + 8; 
    else 
     System.out.println("NOOOOOOO"); 

    System.out.println(valOfSecondLetter); 
    System.out.println(firstLetter + secondLetter + thirdLetter + lastLetter); 

所以這個程序做的是如果你輸入一個單詞並且只有四個字母單詞(來自ACSL),只有a,e = 1點d,r = 2點b,m = 3點v,y = 4點j,x = 8點。如果我鍵入用空格例如Java的,它會打印我們下面

8 
1 
4 
1 
java 

如果你輸入的東西比那些信件否則將打印「NOOOOOO」(我不知道他爲什麼這麼做) 而我呢不知道我怎樣才能把它變成一個更簡單的形式。我正在考慮製作一個字符串並讀取每個字母,並將它放在一個if else語句中。那可能嗎?

回答

0

我在想,製作一個字符串並讀取每個字母,並將其放在一個if else語句中。那可能嗎?

絕對。

可以讀取整個單詞串nextLine(),分裂,charstoCharArray(),使用for loop迭代字符,並使用switch statement在略少重複的方式來測試字符的值比使用IF/ELSEIF。

Scanner input = new Scanner(System.in); 
System.out.println("Enter the word:"); 
String word = input.nextLine(); 
int wordValue = 0; 

for (char c : word.toCharArray()) { 
    int val; 
    switch (c) { 
    case 'a': 
    case 'e': 
     val = 1; 
     break; 
    case 'd': 
    case 'r': 
     val = 2; 
     break; 
    case 'b': 
    case 'm': 
     val = 3; 
     break; 
    case 'v': 
    case 'y': 
     val = 4; 
     break; 
    case 'j': 
    case 'x': 
     val = 8; 
     break; 
    default: 
     System.out.println("NOOOOOOO"); 
     return; 
    } 

    wordValue += val; 
} 

System.out.println(wordValue);