2016-08-12 61 views
2

我試圖編寫一個將您的名字更改爲數字的東西,我不確定是否以最簡單或甚至最正確的方式進行。我對編程真的很陌生。我試圖將名稱輸入轉換爲數字

public class Project1 { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 
    char ch1 = 'a'; 
    char ch2 = 'b'; 
    char ch3 = 'c'; 
    char ch4 = 'd'; 
    char ch5 = 'e'; 
    char ch6 = 'f'; 
    char ch7 = 'g'; 
    char ch8 = 'h'; 
    char ch9 = 'i'; 
    char ch10 = 'j'; 
    char ch11 = 'k'; 
    char ch12 = 'l'; 
    char ch13 = 'm'; 
    char ch14 = 'n'; 
    char ch15 = 'o'; 
    char ch16 = 'p'; 
    char ch17 = 'q'; 
    char ch18 = 'r'; 
    char ch19 = 's'; 
    char ch20 = 't'; 
    char ch21 = 'u'; 
    char ch22 = 'v'; 
    char ch23 = 'w'; 
    char ch24 = 'x'; 
    char ch25 = 'y'; 
    char ch26 = 'z'; 

    int num1 = ch1 - 'a' + 1; 
    int num2 = ch2 - 'a' + 1; 
    int num3 = ch3 - 'a' + 1; 
    int num4 = ch4 - 'a' + 1; 
    int num5 = ch5 - 'a' + 1; 
    int num6 = ch6 - 'a' + 1; 
    int num7 = ch7 - 'a' + 1; 
    int num8 = ch8 - 'a' + 1; 
    int num9 = ch9 - 'a' + 1; 
    int num10 = ch10 - 'a' + 1; 
    int num11 = ch11 - 'a' + 1; 
    int num12 = ch12 - 'a' + 1; 
    int num13 = ch13 - 'a' + 1; 
    int num14 = ch14 - 'a' + 1; 
    int num15 = ch15 - 'a' + 1; 
    int num16 = ch16 - 'a' + 1; 
    int num17 = ch17 - 'a' + 1; 
    int num18 = ch18 - 'a' + 1; 
    int num19 = ch19 - 'a' + 1; 
    int num20 = ch20 - 'a' + 1; 
    int num21 = ch21 - 'a' + 1; 
    int num22 = ch22 - 'a' + 1; 
    int num23 = ch23 - 'a' + 1; 
    int num24 = ch24 - 'a' + 1; 
    int num25 = ch25 - 'a' + 1; 
    int num26 = ch26 - 'a' + 1; 



    String name = JOptionPane.showInputDialog(null,"Enter your name:"); 

    System.out.println("your name is: " +name); 
} 
} 
+2

A)不,你已經可以從第一個答案看,你是非常複雜的事情。 B)請理解,這樣的問題......實際上不屬於這裏。只是發佈代碼並詢問「我是否在正確的軌道上」並不適合這裏。這個地方是針對特定問題的,比如「我被困在這裏,我怎麼這樣;或者爲什麼這裏不工作,給我那個錯誤」。 – GhostCat

回答

0

你可以在一個更簡單的方法做到這一點。

既然你沒有說如何你想將字符串轉換爲數字/數字。我會給你幾個選擇。您可以使用hashCode。這種方法對每個唯一的字符串返回一個獨特的價值:

String name = JOptionPane.showInputDialog(null,"Enter your name:"); 

System.out.println("your name is: " + name.hashCode()); 

所以,如果我進入「掃」和「清道夫」,輸出將是相同的:

your name is: -143341447 

或者,您也可以相互轉換字符對應的ASCII碼通過鑄造charint

String name = JOptionPane.showInputDialog(null,"Enter your name:"); 
char[] chars = name.toCharArray(); 
System.out.print("your name is: "); 
for (char c : chars) { 
    System.out.print((int)c); 
    System.out.print(" "); 
} 

進 「清掃」 將輸出:

your name is: 83 119 101 101 112 101 114 

另一種方法是添加上去的ASCII值:

String name = JOptionPane.showInputDialog(null,"Enter your name:"); 
char[] chars = name.toCharArray(); 
System.out.print("your name is: "); 
int sum = 0; 
for (char c : chars) { 
    sum += (int)c; 
} 
System.out.println(sum); 

「掃地」 作爲輸入時產生:

your name is: 731 

你也可以把az和AZ在HashMap<Character, Integer>給每個字符你的自定義值:

HashMap<Character, Integer> map = new HashMap<>(); 
map.put('a', 1); 
map.put('b', 2); 
map.put('c', 3); 
map.put('d', 4); 
map.put('e', 5); 
// and so on... 

String name = JOptionPane.showInputDialog(null,"Enter your name:"); 
char[] chars = name.toCharArray(); 
System.out.print("your name is: "); 
for (char c : chars) { 
    System.out.print(map.get(c)); 
    System.out.print(" "); 
} 
+0

對於你的第二個方法,爲什麼它不打印出我分配我的int值時喜歡的數字,當我放入n時,它會放出110而不是14? –

+0

@ NicholasDrolet-Mercier它不會打印ASCII值的第二種方法。如果您想打印自己的值,請嘗試最後一種方法。 – Sweeper

0

試試這個

String name = "abc"; 
char[] chars = name.toCharArray(); 
for (char c : chars) { 
    System.out.print(c-'a'+1); 
}