簡體   English   中英

將字母轉換為數字2

[英]Converting Letters to Numbers 2

請參閱將字母轉換為數字

在文件test.in.rtf ,輸入了“ abcd”。 但是,當我運行該程序時,我得到了??? ??????????? ???????? plus maybe a few more ??? ??????????? ???????? plus maybe a few more ??? ??????????? ???????? plus maybe a few moretest.out.rtf ??? ??????????? ???????? plus maybe a few more 為什么是這樣? 我想念什么嗎?

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

}

我很確定你要

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

或簡單地

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

它隱式地做同樣的事情,因為表達式c - 'a' + 1被隱式轉換為int因為Java執行所有非long整數數學(涉及charbyte s, short s和/或int的任何事情)首先將所有內容轉換為int

您將整數結果轉換為char結果,這將由其ASCII值為該數字的字符表示(該數字為b / w 1和26),這是不可讀的。

您正在嘗試編寫char值1,2,3和4('a'-'a'+ 1 = 1,依此類推),它們都是“不可寫的”,因此是“?”。 為什么得到7而不是4? 我不知道-可能是語言環境問題,或者其中的3個只是寫為兩個“?”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM