【问题标题】:Cannot convert int to string in Java无法在 Java 中将 int 转换为字符串
【发布时间】:2018-04-26 12:10:29
【问题描述】:

我收到一个错误:cannot convert int to string in Java

脚本通过获取前 2 个字母、中间字母和最后 2 个字母来简单地提取字符串中的“隐藏”单词

这是我的代码:

package hello;
import java.util.*;
public class hello {
    public static String extract(String input) {
        if (input.length()>5) {
            int len = input.length();
            return input.charAt(0) + input.charAt(1) + input.charAt(len/2)+ input.charAt(len-2)+ input.charAt(len-1);
        }
    }
    public static void main(String[] args) {
        System.out.println("Enter a word:");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        String output = extract(input);
        System.out.println(output);     
    }
}

【问题讨论】:

  • char 是整数类型。如果你把一堆字符加在一起,你会得到一个 int,而不是一个字符串。

标签: java string char


【解决方案1】:
return input.charAt(0) + input.charAt(1) + input.charAt(len/2)+ input.charAt(len-2)+ input.charAt(len-1)

char 是一个 int 类型。如果你把一堆字符加在一起,你会得到一个 int,而不是一个字符串。

另一方面,如果你将一个字符串添加到一个 char 或另一个字符串中,那么它们会被连接到另一个字符串中:

return input.substring(0,2) + input.charAt(len/2) + input.substring(len-2);

编辑

您的方法目前仅在input.length()>5 时返回。如果长度为 5 或更少,您的方法不知道它应该返回什么,因此代码将无法编译。

如果您知道在这种情况下您的方法应该返回什么,请在您的 if 块之后添加一个额外的 return

public static String extract(String input) {
    int len = input.length();
    if (len >= 5) {
        return input.substring(0,2) + input.charAt(len/2) + input.substring(len-2);
    }
    return input; // must return something if the length was less than 5.
}

或者,如果你的字符串太短,你可能想抛出一个异常。

【讨论】:

    【解决方案2】:

    当您在两个字符之间使用 + 时,它认为您将两个整数相加:

    'a' + 'b'
    

    相当于:

    97 + 98
    

    在您的情况下,您可以使用 String.copyValueOf 从您的字符创建一个字符串。

    return String.copyValueOf(new 
            char[] { 
                    input.charAt(0), input.charAt(1), input.charAt(len / 2),
                    input.charAt(len - 2), input.charAt(len - 1) 
            }
    );
    

    这将从这个字符创建一个字符串。

    如果你的条件不正确,你的方法仍然需要返回一个默认值。

    public static String extract(String input) {
        if (input.length() > 5) {
            int len = input.length();
            return String.copyValueOf(new 
                    char[] { 
                            input.charAt(0), input.charAt(1), input.charAt(len / 2),
                            input.charAt(len - 2), input.charAt(len - 1) 
                    }
            );
        }
        return "";//if the condition is wrong return empty string or null
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 2017-01-31
      • 2020-12-12
      相关资源
      最近更新 更多