大家好,请问这个程序第20行为什么报错呢?

yyxgs 2016-08-06 12:39:58
package One;

import java.util.*;
import java.lang.*;
import javax.print.DocFlavor.STRING;
import java.io.*;

public class One {

public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

String s = "a+b[[$#c".replaceAll("[\\[$+#]", " ");

System.out.println(eliminateSpace(s));
}

public static String eliminateSpace(String str) {

for (int i = 0; i < str.length(); i++) {

/*判断这个字符是否为空格,如果是删除这个字符*/
if (str.valueOf(str.charAt(i)).compareTo(String.valueOf(' ')) == 0) {

StringBuilder myString = new StringBuilder(str);
myString.deleteCharAt(i);

/*返回新的String对象*/
return myString.toString();
}
}
}
}
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
江湖阿三 2016-08-07
  • 打赏
  • 举报
回复
引用 2 楼 rickylin86的回复:
你的eliminateSpace(String str)方法都没有返回语句. 可以在这个方法的尾部加上return null; 还有就是有个建议. 最近经常看到你在CSDN上发问题. 建议你遇到问题可以先自己从头到尾看下代码,比如有些是按照书上抄的就比对下是否自己那个代码和书上的不一样,如果代码是自己写的就考虑下整个代码是否合理或者哪里出问题. 如果还是没办法找出原因可以百度搜索相关的错误一定会有人遇到过然后看看如何解决. 如果依旧没有找到答案再来CSDN发帖. 感觉这样你对编写代码的能力提高会高些,而不是一遇到问题就来这里问答案.直接获取答案并不会给自己留下深刻印象. 个人见解,如果不同意的话可以忽略.
十分赞成楼上的说法,学习本该如此,独自解决问题的能力十分重要。
yyxgs 2016-08-06
  • 打赏
  • 举报
回复
引用 3 楼 an_2016 的回复:
报错的原因是没有返回值,你自己定义的方法是返回string,方法体里面有一个return,但是这个是放在if流程控制语句中的,加入这个if条件句条件是false,则不走这个if里面的代码,则这个里面的return就不走,也不返回,当然报错没有返回值错误了
谢谢!的确是这样,C代码中这样是可以通过编译的。。所以我以为惯性认为不会是这个问题了。。
#include <stdio.h>
#include <string.h>

char* eliminateSpace(char *str) {

	if (strcmp(str, "exit") == 0) {

		return "this is not a valid string";
	}
}

int main(int argc, char *argv[])
{
	eliminateSpace("exit");

	return 0;
}
yyxgs 2016-08-06
  • 打赏
  • 举报
回复
引用 2 楼 rickylin86 的回复:
你的eliminateSpace(String str)方法都没有返回语句. 可以在这个方法的尾部加上return null; 还有就是有个建议. 最近经常看到你在CSDN上发问题. 建议你遇到问题可以先自己从头到尾看下代码,比如有些是按照书上抄的就比对下是否自己那个代码和书上的不一样,如果代码是自己写的就考虑下整个代码是否合理或者哪里出问题. 如果还是没办法找出原因可以百度搜索相关的错误一定会有人遇到过然后看看如何解决. 如果依旧没有找到答案再来CSDN发帖. 感觉这样你对编写代码的能力提高会高些,而不是一遇到问题就来这里问答案.直接获取答案并不会给自己留下深刻印象. 个人见解,如果不同意的话可以忽略.
当然同意,按说你说的加return null程序通过编译了,谢谢指导,只是C代码中这样是能通过编译,所以我以为Java也能。
#include <stdio.h>
#include <string.h>

char* eliminateSpace(char *str) {

	if (strcmp(str, "exit") == 0) {

		return "this is not a valid string";
	}
}

int main(int argc, char *argv[])
{
	eliminateSpace("exit");

	return 0;
}
yyxgs 2016-08-06
  • 打赏
  • 举报
回复
NewMoons 2016-08-06
  • 打赏
  • 举报
回复
我对2楼的意见表示深深的同意!
科比请留步 2016-08-06
  • 打赏
  • 举报
回复
报错的原因是没有返回值,你自己定义的方法是返回string,方法体里面有一个return,但是这个是放在if流程控制语句中的,加入这个if条件句条件是false,则不走这个if里面的代码,则这个里面的return就不走,也不返回,当然报错没有返回值错误了
rickylin86 2016-08-06
  • 打赏
  • 举报
回复
你的eliminateSpace(String str)方法都没有返回语句. 可以在这个方法的尾部加上return null; 还有就是有个建议. 最近经常看到你在CSDN上发问题. 建议你遇到问题可以先自己从头到尾看下代码,比如有些是按照书上抄的就比对下是否自己那个代码和书上的不一样,如果代码是自己写的就考虑下整个代码是否合理或者哪里出问题. 如果还是没办法找出原因可以百度搜索相关的错误一定会有人遇到过然后看看如何解决. 如果依旧没有找到答案再来CSDN发帖. 感觉这样你对编写代码的能力提高会高些,而不是一遇到问题就来这里问答案.直接获取答案并不会给自己留下深刻印象. 个人见解,如果不同意的话可以忽略.

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧