1

文字を次のような数字に変換するプログラムがあるとしましょう。

入力:abcd

出力:1234

  1. どうすればabcdを1234に効率的に変換できますか
  2. トークンから個々の文字をすべて抽出するにはどうすればよいですか

ちなみに、これは宿題ではありません。(これは楽しみのためです)

これは私がこれまでに持っているものです:

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);                              

    }

}
4

7 に答える 7

5

これを試して:

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.
于 2012-05-17T22:40:36.987 に答える
1

キーを使用して、値が1、2、3などのa、b、cなどのマップを定義します。トークンを受け取ったら、マップからトークンを取得して印刷します。

于 2012-05-17T22:40:54.453 に答える
1

文字を大文字にし、ASCIIに変換し、「A」を減算してから1を加算します。複数文字の入力を処理している場合は、文字列を繰り返し処理します。前の推奨に従って計算するときは、前の合計に10を掛けてから、新しい値を追加します。

于 2012-05-17T22:41:01.680 に答える
0

ダープ、私は質問全体を間違って読んだ。私の悪い。

あなたができることは、私が推測する変換アルゴリズムを持っているということです。アルファベットの各文字は、アルファベットの値を持つことができます。

次に、あなたがする必要があるのは、あなたが見つけた文字をあなたからの文字と文字列配列と一致させ、そのインデックスを取得し、それに1を追加することです。次に、値を取得します。それがあなたがプレイしたい方法なら。

于 2012-05-17T22:39:36.080 に答える
0

これがあなたが探している方法だと思います:String's charAt

あなたが求めていることを実行するサンプルコード:

String a="abcd";
for (int i = 0; i < a.length(); ++i) {
   System.out.print(a.charAt(i)-'a'+1);
}
于 2012-05-17T22:42:41.563 に答える
0

charをintに変換して残り96を試すことができます。範囲外の文字に注意するか、正規表現を使用する必要があります。

このサンプルはabcdを1234に変換します

aは97(alt + 9 7)の文字ですzは文字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);
    }
于 2012-05-17T22:42:43.297 に答える
0

java.util.Scannerをインポートします。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");
        }   




}

}

于 2015-07-08T10:33:20.533 に答える