无法在Java中将int转换为字符串

时间:2018-04-26 12:10:29

标签: java string char

我收到错误: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);     
    }
}

2 个答案:

答案 0 :(得分:3)

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或更小,则您的方法不知道应该返回什么,因此代码将无法编译。

如果您知道在这种情况下应返回的方法,请在return阻止后添加额外的if

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.
}

或者,如果字符串太短,您可能希望抛出异常。

答案 1 :(得分: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
}