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