2016-12-03 5 views
0

私はスターウォーズの名前ジェネレータの一部として次のコードを持っています。単語の文字を対応する数字に変換してから追加する

唯一のことは、スターウォーズの名前を番号の付いた相手(A = 1、B = 2 ... Z = 26など)に変換する必要がある強制番号を追加することです。 )、それらの番号を1つの最終番号(強制番号)にまとめて追加します。

私は力の番号を得ると信じているもののうち、その部分をコメントしましたが、それはエラーを生成し続けます。

また、私が得たこのレター・ツー・ナンバー変換コードは、別のスレッドからのものであり、タスクを実行する最も効率的な方法ではありません。

ありがとうございました。

import java.util.Scanner; 
import static java.lang.System.out; 

public class starWarsName { 
private static final Scanner INPUT = new Scanner(System.in); 

public static void main(String args[]) { 

out.println("Star Wars name and force # Generator"); 
String firstName = promptString("State your first name: "); 
String lastName = promptString("State your last name: "); 
String maiden = promptString("Enter your mother's maiden name: "); 
String city = promptString("Enter the city/town in which you were born: "); 

while(lastName.length() < 3) 
    lastName += lastName; 
while(firstName.length() < 2) 
    firstName += firstName; 
while(maiden.length() < 2) 
    maiden += maiden; 
while(city.length() < 3) 
    city += city; 

String swFirstName = (lastName.substring(0,3) + firstName.substring(0,2)).toUpperCase(); 
String swLastName = (maiden.substring(0,2) + city.substring(0,3)).toUpperCase(); 


//* 
import java.util.HashMap; 
import java.util.Map; 

    final Map<Character, Integer> map; 
    final String str = "forceNum = "; 

    map = new HashMap<>(); 

    map.put('a', 1); map.put('b', 2); map.put('c', 3); map.put('d', 4); map.put('e', 5); map.put('f', 6); map.put('g', 7); map.put('h', 8); map.put('i', 9); map.put('j', 10); map.put('k', 11); map.put('l', 12); map.put('m', 13); map.put('n', 14); map.put('o', 15); map.put('p', 16); map.put('q', 17); map.put('r', 18); map.put('s', 19); map.put('t', 20); map.put('u', 21); map.put('v', 22); map.put('w', 23); map.put('x', 24); map.put('y', 25); map.put('z', 26); 

    for(final char c : str.toCharArray()) 
    { 
     final Integer val; 

     val = map.get(c); 

     if(val == null) 
     { 

     } 
     else 
     { 
      System.out.print(val + " "); 
     } 
    } 

    System.out.println(); 
} 
} 

//* 


out.println("Your Star Wars name is " + swFirstName + " " + swLastName + " with a force # of " + forceNum); 
} 

private static String promptString(String prompt) { 
out.print(prompt); 
return INPUT.nextLine().trim(); 
} 
} 
+0

各文字の値は 'char'型として使用できます。 –

答えて

0

あなたの「力名」charsで構成されstring、となります。各charは、整数がASCII'A' = 65, 'B' = 66, 'a' = 97, 'z' = 122)です。 'A''a'の値を「開始点」として使用して、各文字にアルファベット番号を割り当てることができます。

「A」の文字は65 - 65 + 1 = 1となります。同様に、文字 'B'(66 - 65 + 1 = 2)、文字 'a'(97 - 97 + 1 = 1)、文字 'z'(122 - 97 + 1 = 26)。

String name = "First Middle Last"; // this implementation ignores spaces 
int sum = 0;      // store the accumulating force number 

for (int i = 0; i < name.length(); ++i) {  // iterate over name, one letter at a time 
    int letter = name.charAt(i); 
    if (letter >= 'A' && letter <= 'Z') {   
     sum += letter - 'A' + 1;    // capital letters use 'A' as starting point 
    } else if (letter >= 'a' && letter <= 'z') { 
     sum += letter - 'a' + 1;    // little letters use 'a' as starting point 
    } 
} 

System.out.println(sum); // verify sum is 72 + 47 + 52 = 171 
関連する問題