首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - charAt错误字符

Java - charAt错误字符
EN

Stack Overflow用户
提问于 2014-05-21 15:03:31
回答 1查看 1.5K关注 0票数 0

我正在尝试制定一种算法,该算法将执行以下操作:

代码语言:javascript
复制
64 
797
  7
===
 79

这需要7,乘以7,然后写下答案的最后一个数字,然后乘以7,再加上第一个7乘7的数字,以此类推--如果你做三次(写下来),你就会得到我在那里写的乘法。

我得到了一个不太好的代码,而不是在下面的表单中显示(例如)上面的内容:

代码语言:javascript
复制
7,9,4
9,7,6

所以我得到了这样的东西:

代码语言:javascript
复制
7, 9, 52
9, 55, 54

我的代码:

代码语言:javascript
复制
    for(int i = 0; i<3; i++){//Run the code three times
        temp=upper*7%10+tens;//get the temp but keeping the upper because I am going to need it for the tens part
        tens=(upper*7+"").charAt(0);//get the first character of upper*7
        System.out.println(upper+", "+temp+", "+tens);
        upper=temp;
    }

据我所见,问题在charAt中,因为很明显,7*7的第一个字符不是52。

编辑现在代码运行良好,我有另一个问题。我尝试了我的新工作代码(将几十作为字符字符串值的int值,而不是仅仅作为char),我还有另一个问题。万岁!

代码语言:javascript
复制
Last tens: 0  Now's plain number:7, New:9, Tens:4
Last tens: 4  Now's plain number:9, New:7, Tens:6
Last tens: 6  Now's plain number:7, New:15, Tens:4
Last tens: 4  Now's plain number:15, New:9, Tens:1
Last tens: 1  Now's plain number:9, New:4, Tens:6

我的代码现在和旧的代码一样,只有几十个固定的。但现在,我得到了一个数字15。那应该是个数字。出什么事了?老实说,我不知道我写的代码是否能达到我的目的。什么密码?

EN

回答 1

Stack Overflow用户

发布于 2014-05-21 15:08:00

我强烈怀疑问题是tens的类型。您还没有在代码中显示这一点,但我怀疑它是int

所以这句话:

代码语言:javascript
复制
tens = (upper*7+"").charAt(0);

从字符串中获取第一个字符,然后将其存储在int中。例如,字符'4‘是Unicode 52 ('0')是48。向int的转换只是将UTF-16代码单元从一个无符号的16位值转换为一个有符号的32位值。

然后显示tens的值--但是如果tens确实是一个int,它将显示为一个数字。

据我所见,问题在charAt中,因为很明显,7*7的第一个字符不是52。

那么,7*7的字符串表示的第一个字符将是'4‘。当它被转换成一个int时,您将看到它是52。

如果您只希望tens作为char,则应该将其声明为char类型。当然,您不应该使用这个值进行算术--但是当您显示它时,您将看到显示了4,因为字符串转换仍然将它视为一个字符而不是一个数字。

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

https://stackoverflow.com/questions/23787035

复制
相关文章

相似问题

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