0

文字から数字への変換を参照してください

ファイルtest.in.rtfに「abcd」と入力しました。ただし、プログラムを実行すると、になり??? ??????????? ???????? plus maybe a few moreますtest.out.rtf。どうしてこれなの?私は何かが足りないのですか?

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class Test {

    public static void main(String[] args) throws IOException  {

        BufferedReader f = new BufferedReader(new FileReader("test.in.rtf"));

        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out.rtf")));

        StringTokenizer st = new StringTokenizer(f.readLine());


        StringBuilder sb = new StringBuilder();

        for (char c : st.nextToken().toCharArray()) {
            sb.append((char)(c - 'a' + 1));
        }

        out.println(sb);                           // output result
        out.close();                                  // close the output file
        System.exit(0);
    }

}
4

2 に答える 2

2

私はあなたが欲しいと確信しています

sb.append(Integer.toString(c - 'a' + 1));

または単に

sb.append( c - 'a' + 1 );

Java はすべての非整数演算 ( s、s、s、および/またはs を含むもの) をすべて最初に s に変換するため、式c - 'a' + 1は暗黙的に an にキャストされるため、これは暗黙的に同じことを行います。intlongcharbyteshortintint

整数の結果を にキャストしたものcharは、ASCII 値がその数値 (b/w 1 と 26 の何か) である文字で表されますが、これは読み取り可能なものではありません。

于 2012-05-18T22:36:21.080 に答える
1

char 値 1、2、3、および 4 ('a'-'a' + 1 = 1 など) を書き込もうとしていますが、これらはすべて「書き込み不可」であるため、「?」です。なんで4じゃなくて7なの?わかりません - おそらくロケールの問題か、そのうちの 3 つが 2 つの "?" として書かれているだけかもしれません。

于 2012-05-18T22:42:33.080 に答える