【问题标题】:Having trouble with methods, string, char方法、字符串、字符有问题
【发布时间】:2018-09-17 10:18:22
【问题描述】:

我目前正在尝试让我的代码在 hello world 中返回字母“d”,但不确定代码有什么问题:

 public class StringTest{
    public static void main(String [] args){
        String test= "Hello World";
        world(test);
    }

    public static String world(String original){
        int x= original.charAt(original.length()-1);
        return x;
    }
}

【问题讨论】:

  • String world改成char world就可以只用return original.charAt(original.length()-1);
  • 将返回类型从String更改为方法世界的char。
  • 您在编写代码时使用的是 IntelliJ 或 Eclipse 之类的 IDE 吗?您的错误是代码 linter 通过 IDE GUI 查找和报告的典型示例......
  • 您不需要 linter,因为此代码甚至无法编译。该方法被声明为返回String,因此编译器不允许返回int
  • 返回 original.charAt(original.length()-1).toString()

标签: java string char


【解决方案1】:

String.charAt 返回一个char (see API here),所以你有两个选择:

要么你想返回一个char,你需要改变你的方法的返回类型:

public static char world(String original){
    return original.charAt(original.length()-1);
}

或者您想返回String,并且您需要将char 更改为String,例如使用String.valueOf (see API here)

public static String world(String original){
    return String.valueOf(original.charAt(original.length()-1));
}

【讨论】:

  • 老兄......@YCF_L 在评论中写下了大部分答案......你不认为他应该为此获得荣誉吗?
  • 你没有写答案,你写了评论。编写 cmets 不会获得任何声誉。而且你有积分,你的评论已经有 4 人赞成。
  • 我写了一篇关于使用 IDE 的评论,@YCF_L 在评论中写了答案。
  • @RannLifshitz 没有人说相反的。他写了一条评论。如果他想要声誉,他会写一个答案。他有 23K 的声望,所以我想他知道这一点。对完美的答案投反对票是没有用的。
  • 工作关系/学术界有一个基本概念,当您使用他人的工作或将您的工作建立在他人工作的基础上时,您会为此给予他们信任。这是体面的事情。当有评论详细说明其内容时,否决答案对我来说似乎是合法的。您想删除反对票吗?从给予信任开始你的答案。
【解决方案2】:

我对你现在要做什么有点困惑。

您帖子中的代码将“d”作为字符串返回。 您是否编辑了帖子以提供工作版本? 这是正确的:

public static String world(String original){
    return Character.toString(original.charAt(original.length()-1)) ;
}

public static void main(String[] args) {
    String test= "Hello World";
    System.out.println(world(test));
}

【讨论】:

  • 是的,有人用答案编辑了问题,我将其编辑回原来的形式。
【解决方案3】:

在Java中,String.charAt(int index)返回一个字符,int不能隐式转换为char

您可以做的是将返回的字符转换为字符串中的 charAt:

public class StringTest{
    public static void main(String [] args){
        String test= "Hello World";
        world(test);
    }

    public static String world(String original)
    {
       return Character.toString(original.charAt(original.length()-1));
    }

还有一种更简单的方法:

创建空字符串并与您的字符连接。 这会自动将 char 转换为 String,因为 我们正在将一个元素添加到一个 String 本身 支持这些字符的字符串:

    public static String world(String original)
    {
       return "" + original.charAt(original.length()-1); 
    }

}

【讨论】:

  • 至少提到@YCF_L,他写了您在此处发布的部分内容作为评论中的答案。
  • @RannLifshitz 好吧,编辑我的帖子,我希望现在没有冲突
  • 完成,给您带来的不便,敬请原谅。
  • @HéctorManuelMartinezDurán 不知道你说and int can not be implicitly converted to char是什么意思你是说and int/char can not be implicitly converted to String吗?
  • @Bentaye int x= original.charAt(original.length()-1);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2010-12-07
  • 2011-01-15
相关资源
最近更新 更多