charAt 产生不同的输出
Posted
技术标签:
【中文标题】charAt 产生不同的输出【英文标题】:charAt producing different outputs 【发布时间】:2014-05-06 09:24:11 【问题描述】:现在这段代码在一台机器上工作得很好,但在另一台机器上只是拒绝输出正确的结果。
这是一个简单的 Initials 输出请求。我对代码没有任何疑问,但我的问题是为什么它输出的是数字而不是字母?
使用 Eclipse(Kepler) 从我的笔记本电脑运行代码时没有问题,我收到了信件。如果我使用我可用的桌面之一和相同版本的 Eclipse,我会得到一个整数。可能是设置,但我不知道为什么。并且重写代码不会改变输出
import java.util.Scanner;
public class InitialHere
public static void main(String[] args)
// TODO Auto-generated method stub
//Using input keyboard
Scanner kb = new Scanner(System.in);
String firstname,lastname;
//Requesting names
System.out.print("What is your first name?");
firstname = kb.nextLine();
System.out.print("What is your last name?");
lastname = kb.nextLine();
//Calculating the initials
char achar = firstname.charAt(0);
char bchar = lastname.charAt(0);
//Output
System.out.println("Your initials are " + achar + bchar);
【问题讨论】:
输入输出到底是什么? 想象输入是 Tom Walton,结果应该是 TW。但它最终是 171。 哦,真的,你之前有没有把firstname
和lastname
sysout?
你做了什么代码,一切正常?你对代码有什么期望?
我们的想法不是系统输出名称,而只是系统输出代码的首字母。
【参考方案1】:
试试这个:
System.out.println("Your initials are " + achar + "" + bchar);
我认为这不应该发生,但它闻起来像 char 添加。例如:
char a='a';
char b='b';
System.out.println( a+b ); ==> 195
【讨论】:
这非常有效,非常感谢。为什么它可以在某些机器上运行而不在其他机器上运行?让我有点困惑 并非如此。我认为这根本不应该发生,如果发生的话将是一个编译器错误。 @Snorrarcisco 我能想到的唯一原因是您的 JVM 版本在不同的机器上可能会有所不同。 @SavTheCoder 为这没想到而欢呼。将检查机器的不同 JVM 版本。 @SavTheCoder:即使使用不同的 JVM,也不应该发生这种情况。如果有的话,这可能是编译器问题。运算符的关联性是明确定义的。参见例如:示例 15.18.1-1。字符串连接docs.oracle.com/javase/specs/jls/se7/html/jls-15.html以上是关于charAt 产生不同的输出的主要内容,如果未能解决你的问题,请参考以下文章