当前位置: 首页 > 知识库问答 >
问题:

我没有返回字符串吗?[副本]

袁法
2023-03-14
public static String FindUpperCase (String x){
 for (int i = x.length(); i>=0; i--){
      if (Character.isUpperCase(x.charAt(i))){
          return x.substring(i); }
    }

但是我得到了一个错误,它告诉我必须返回一个字符串。当我查看API时,它告诉我它返回的字符串是另一个字符串的子集...这意味着我返回的是一个字符串,对吗?我被告知这是因为我在循环中返回一个字符串,这不是一回事,但我对这意味着什么有点困惑,因为循环不是在方法中吗?有没有人知道我做错了什么或者我该怎么解决这个问题?

共有1个答案

曹光霁
2023-03-14

不,您并不总是返回字符串。如果输入完全是小写呢?

基本上,在for循环之后需要一个return语句(或抛出一个异常),以处理它结束时的情况。即使在您可能无法实际到达循环末尾的情况下,Java编译器也遵循严格的可达性规则,如JLS第14.21节所述。因此,即使您的return语句是无条件的,并且我们知道length()总是返回一个非负值,这仍然无法编译:

public static String broken(String input) {
    // *We* know that we'll always go into the body of the loop...
    for (int x = input.length(); x >= 0; x--) {
        return input;
    }
    // The end of the method is still reachable from the compiler's standpoint
}

非void方法的结尾是不可访问的-您必须抛出一个异常或返回一个值。

 类似资料:
  • GETRANGE key start end 返回key 中字符串值的子字符串,字符串的截取范围由start 和end 两个偏移量决定(包括start 和end 在内)。可以使用负值,字符串右面下标是从-1开始的。 注意返回值处理: 1: start>=length, 则返回空字符串 2: stop>=length,则截取至字符结尾 3: 如果start 所处位置在stop右边, 返回空字符串

  • 这可能是最简单的事情之一,但我没有看到我做错了什么。 我的输入包括第一行带有数字(要读取的行数),一堆带有数据的行和最后一行只带有\n。我应该处理这个输入,在最后一行之后,做一些工作。 我有这样的意见: 为了读取输入,我有以下代码。 我的问题是为什么我不打印任何东西?程序读取第一行,然后什么也不做。

  • //即使在返回成功消息后,我仍然收到预期的字符串返回…//任何帮助都将不胜感激

  • 问题内容: 我有一个返回字符串的Java实例方法,我正在C ++中通过JNI调用此方法。我写了以下代码: 如何获取字符串并将其转换为const char *? 我的程序在访问冲突为0x00000000的最后一行崩溃。returnString不是NULL。 问题答案: 根据,最后一个参数是的指针。 更改 至 或者更好的是,返回一个 我建立了一个类似的简单示例,到目前为止,代码看起来还不错。 虽然,有

  • 问题内容: 我犹豫要问这个问题,因为它看起来很奇怪。但不管怎么说。以防万一有人已经遇到了相同的问题…文件系统功能(fopem,file,file_get_contents)对于http://包装器表现得很奇怪 它似乎有效。 没有提出错误 。fopen()返回资源。 它不会为所有肯定有效的网址返回任何数据(例如)。 文件返回空数组,file_get_contents()返回空字符串,fread返回f

  • 我有一个Java实例方法,它返回一个字符串,我通过C中的JNI调用这个方法。我编写了以下代码: 如何获取字符串并将其转换为常量字符*? 我的程序在最后一行崩溃,访问冲突为0x00000000。returnString不为NULL。