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。 哦,真的,你之前有没有把firstnamelastname 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 产生不同的输出的主要内容,如果未能解决你的问题,请参考以下文章

决策树产生不同的输出

Libsodium JS KDF 函数产生不同的输出

Yarn 脚本产生的输出与直接运行命令不同

打印UTF-8会产生不同的输出[重复]

为啥 OpenCV 的 MSER 的 Python 实现和 Java 实现会产生不同的输出?

阐述indexOf,charAt,subString 方法的使用