【问题标题】:charAt producing different outputscharAt 产生不同的输出
【发布时间】: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?
  • 你做了什么代码,一切正常?你对代码有什么期望?
  • 我们的想法不是系统输出名称,而只是系统输出代码的首字母。

标签: java charat


【解决方案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
猜你喜欢
  • 2016-01-22
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多