【发布时间】:2014-03-22 23:05:48
【问题描述】:
让我进一步解释。我有一个返回反转字符串的字符串函数(称为 stringReversal),它在函数中没有错误。但是,当我尝试使用主函数中的System.out.println() 进行打印时,它给了我错误“无法从 StringReverse 类型对非静态方法 stringReversal (string s) 进行静态引用”。
我尝试给我的 stringReversal 一个 static 修饰符,但这样做之后,它给了我运行时错误。
我的代码如下所示:
public class StringReverse {
public String stringReversal(String s){
if(s == null){
return null;
}
else if(s.length()% 2 == 0){
int size = s.length();
for(int i =0; i<s.length(); i++){
s.replace(s.charAt(i), s.charAt(size));
size--;
if(i == (s.length()/2) || size==0)
break;
}
}
else{
for(int i =0; i<s.length(); i++){
int size = s.length();
s.replace(s.charAt(i), s.charAt(size));
size--;
if(i == ((s.length()/2) +1) || size==0 )
break;
}
}
return s;
}
public static void main(String[] args) {
String str = "Hello";
String rev = stringReversal(str);
System.out.println();
}
}
【问题讨论】:
-
你遇到了什么运行时错误?
-
@VinceEmigh 它无法编译。 OP 发布了他/她的错误。
-
我仍然不赞成。 @Ebad 您是否在 发布到 StackOverflow 之前搜索了您的错误消息并遵循了您得到的任何建议?
-
让我猜猜 -- 在将方法设为静态后,您会收到此运行时错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind ex out of range: 5 at java.lang.String.charAt(Unknown Source) at StringReverse.stringReversal(StringReverse.java:24) at StringReverse.main(StringReverse.java:37)---- 您知道,要做的事情是实际报告该错误是什么,而不是说“我遇到了错误”。 -
基本上,您的问题是:
int size = s.length(); s.replace(s.charAt(i), s.charAt(size));。这里的“size”将是s的长度,charAt必须传递一个介于 0 和 size-1 之间的参数。所以难免会报错。 (当然,很容易判断错误是什么,因为上面的异常消息为您提供了方法(charAt)以及调用它的位置(stringReversal,第 24 行)。
标签: java string methods static-methods