将字母转换为数字

时间:2012-05-17 22:37:16

标签: java

我们说我有一个程序可以将字母转换成数字,以便:

输入:abcd

输出:1234

  1. 如何有效地将abcd转换为1234
  2. 如何从令牌中提取每个字符
  3. 顺便说一句,这不是功课。 (这很有趣)

    这是我到目前为止所做的:

    public class Test {
    public static void main(String[] args) throws IOException  {
    
        BufferedReader f = new BufferedReader(new FileReader("test.in"));
    
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out.txt")));
    
        StringTokenizer st = new StringTokenizer(f.readLine());
    
        int i1 = Integer.parseInt(st.nextToken());
    
                // How can I convert this into integers? (where a = 1, b = 2, and c = 3)
    
                out.println(????);
    
            out.close();
            System.exit(0);                              
    
        }
    
    }
    

7 个答案:

答案 0 :(得分:3)

试试这个:

String s = "abcd";
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()) {
    sb.append((char)(c - 'a' + 1));
}
// provided your string contains only lower case non-unicode (ASCII) characters.

答案 1 :(得分:1)

将地图定义为a,b,c等等,其值为1,2,3等。每当您收到一张令牌时,请从地图中取出并打印。

答案 2 :(得分:1)

大写字母,将其转换为ASCII,减去'A',然后加1.如果您正在处理多字符输入,则迭代字符串。按照之前的建议计算,将前一个总和乘以10,然后添加新值。

答案 3 :(得分:0)

Derp,我读错了整个问题。我的坏。

你能做的是,我想你有一个转换算法。 字母表中的每个字母都可以包含字母表中的值。

然后你需要做的就是匹配你找到的字母,用一个字母数组的字母,得到它的索引,然后加1。然后你得到了价值。如果那就是你想玩的方式。

答案 4 :(得分:0)

我想这是你要找的方法:String的{​​{3}}

一个示例代码,可以完成您的工作:

String a="abcd";
for (int i = 0; i < a.length(); ++i) {
   System.out.print(a.charAt(i)-'a'+1);
}

答案 5 :(得分:0)

您可以尝试将char转换为int而rest 96,您必须处理超出范围的字符或使用正则表达式。

此示例将abcd转换为1234

a是97的字符(alt + 9 7) z是char 122

A是字符65,因此您可以按范围处理或只是将单词转换为小写

public static void main(String args[]){
        String abc = "abcd";
        String txt = "";

        for(int i=0; i<abc.length(); i++){
            txt+= ( (int)abc.charAt(i) - 96 );
        }

        System.out.println(txt);
    }

编辑:

public static void main(String args[]){
        String abc = "AbCd";
        String txt = "";
        abc = abc.toLowerCase();

        for(int i=0; i<abc.length(); i++){
            int letter = (int)abc.charAt(i);

            if(letter<97 || letter > 122)//in range
            {
                txt += ( (int)abc.charAt(i) - 96 );
            }

        }

        System.out.println(txt);
    }

答案 6 :(得分:0)

import java.util.Scanner; import java.io。*;

公共类LetteredNumerationSystem {

public static void main(String args[]){

File file = new File ("lettered.in");

    try{

    Scanner input = new Scanner(file);

    int dataCollect = input.nextInt();
    int sum=0;
    String lineInput ="";


      for(int i=0;i<=dataCollect;i++){
      while (input.hasNext()){
      lineInput=input.next();       
      char lineArray[] = lineInput.toCharArray();
         for(int j=0;j<lineArray.length;j++){
            if (lineArray[j] == 'A'){
              sum+=1;
            }
            else if (lineArray[j] == 'B'){
              sum+=10;
            }
            else if (lineArray[j] == 'C'){
               sum+=100;
            }
            else if (lineArray[j] == 'D'){
               sum+=1000;
            }
            else if (lineArray[j] == 'E'){
               sum+=10000;
            }
            else if (lineArray[j] == 'F'){
               sum+=100000;
            }
            else if (lineArray[j] == 'G'){
               sum+=1000000;
            }
            else if (lineArray[j] == 'X'){
               System.out.println(sum);
           sum=0;
            }
         }
        }
      }         
    }

    catch(FileNotFoundException e){
        System.out.println("ERROR");
        }   




}

}