首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字母转换为数字2

将字母转换为数字2
EN

Stack Overflow用户
提问于 2012-05-19 06:30:40
回答 2查看 240关注 0票数 0

请参阅Converting Letters to Numbers

在文件test.in.rtf中,我输入了'abcd‘。但是,当我运行该程序时,我得到test.out.rtf格式的??? ??????????? ???????? plus maybe a few more。为什么会这样呢?我是不是遗漏了什么?

代码语言:javascript
运行
复制
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);
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-19 06:36:21

我很确定你想要

代码语言:javascript
运行
复制
sb.append(Integer.toString(c - 'a' + 1));

或者简单地说

代码语言:javascript
运行
复制
sb.append( c - 'a' + 1 );

它隐式地做了同样的事情,因为表达式c - 'a' + 1被隐式地强制转换为int,因为Java通过首先将所有内容转换为shorts来执行所有非char整数运算(涉及chars、bytes、shorts和/或ints的任何内容)。

您已经将整数结果转换为char,它将由ASCII值是该数字的字符表示( b/w 1和26),这是不可读的东西。

票数 2
EN

Stack Overflow用户

发布于 2012-05-19 06:42:33

你正在尝试写字符值1,2,3和4 ('a'-'a‘+1=1等等),它们都是“不可写的”,因此是“?”。为什么你得到的是7而不是4?我不知道-可能是一个地区问题,或者其中3个只是写成两个"?“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10660510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档