首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java显示中将整数转换为字符无法读取错误的值

在java显示中将整数转换为字符无法读取错误的值
EN

Stack Overflow用户
提问于 2014-08-15 18:27:09
回答 1查看 103关注 0票数 0

我使用简单的方法来改变字符串值,而不改变string.then的原始长度,反向转换,将文本改回纯字符串(变成原始文本)。

我的代码:

代码语言:javascript
复制
    String someText = "abcdefgHIJKLMN";
    char[] data = someText.toCharArray();
    int LEN = someText.length();
    char[] datas = new char[LEN];

    System.out.println("Original Text ("+String.valueOf(LEN)+"): "+someText);
    for (int i = 0; i < LEN; i++) {
        data[i] = Character.valueOf((char) i);
        System.out.println(String.valueOf(i) + " = " + String.valueOf((char) i));
    }

    System.out.println("Add 10 into each charactor : "); // ex a =1 , a+10 : now it's 'k'
    for (int i = 0; i < LEN; i++) {
        char c = Character.valueOf((char) (Character.getNumericValue(Character.valueOf(data[i])) + 10));
        datas[i] = c;
        System.out.print(String.valueOf(c));
    }

    System.out.println("Subtract 10 from each charactor : ");// ex k =11 , k-10 : now it should be 'a'
    for (int i = 0; i < LEN; i++) {
        char c = (char) (Character.getNumericValue(Character.valueOf(datas[i])) - 10);
        System.out.print(String.valueOf(c));
    }

但是,在添加和减去该循环之后,不会显示任何内容。如果有什么解决方案可以在不改变文本原始长度的情况下实现这类事情呢?

这是我想做的事情:

假设a的字符值是97,那么我们在它上面加上10:(97+10) = 107现在它不是a,它应该是不同的字母,比如k,因为107个字符值是:K

EN

回答 1

Stack Overflow用户

发布于 2014-08-15 19:11:01

我认为问题出在第8行:

代码语言:javascript
复制
data[i] = Character.valueOf((char) i);

当i=0时,datai不是'a‘。'a‘的值为97 (十六进制61):http://www.utf8-chartable.de/

此外,您可以使用'+‘添加字符,但'+’运算符的结果是整数,因此您只需将其转换为char - ie。

代码语言:javascript
复制
char c = (char) (data[i] + 10);.

另外,在您的循环中,您使用print而不是println,这就是为什么输出不是很清楚的原因。尝试下面的代码,看看它是否适用于您。

代码语言:javascript
复制
String someText = "abcdefgHIJKLMN";
    char[] data = someText.toCharArray();
    int LEN = someText.length();
    char[] datas = new char[LEN];

    System.out.println("Original Text ("+String.valueOf(LEN)+"): "+someText);
    for (int i = 0; i < LEN; i++) {
        System.out.println(String.valueOf(i) + " = " + data[i]);
    }

    System.out.println("Add 10 into each charactor : "); // ex a =1 , a+10 : now it's 'k'
    for (int i = 0; i < LEN; i++) {
        char c = (char) (data[i] + 10);
        datas[i] = c;
        System.out.println(String.valueOf(c));
    }

    System.out.println("Subtract 10 from each charactor : ");// ex k =11 , k-10 : now it should be 'a'
    for (int i = 0; i < LEN; i++) {
        char c = (char) (datas[i] - 10);
        System.out.println(String.valueOf(c));
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25324898

复制
相关文章

相似问题

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