我有一个学校作业,需要一些帮助。我们的任务是“等级:不适用 查看成绩信息。开启对话 截止时间:2018年11月20日,星期二,晚上11:59 在Eclipse中,创建一个静态方法toggleStem,该方法带有两个参数,均为String。如果第二个参数以第一个参数开头,则该方法返回第二个参数,其中删除了“ stem”。另一方面,如果第二个参数不是以第一个参数开头,则该方法返回将第一个参数附加到第二个参数前面的结果。例如,如果参数为:
“侧面”和“侧面”
然后,静态方法应返回字符串“ ways”,并且参数应为
“侧面”和“踢”,
它应该返回字符串“ sidekick”。
在程序中调用方法。打印出结果。”
我的代码(没有按我的预期工作,不是在添加词干之前删除词干,而是在返回中添加了两个词,以防两个词不共享词干)是:
public class HelloWorld{
public static void main(String []args){
String m = combine("side", "sideways");
System.out.print(m);
}
public static String combine(String a, String b){
int ans = 0;
for(int i = 2; i <= a.length(); i++){
if (!(i <= b.length())){
if (a.substring(0, i) == b.substring(0, i)){
ans = i;
}
}else{
if (ans == 0){
return a+b;
}else{
return a + b.substring(0, ans);
}
}
} return a+b;
}
}
感谢您的时间和答案
编辑:阐明我的意思是“不工作”
答案 0 :(得分:0)
首先,像此处a.substring(0, i) == b.substring(0, i)
一样,在比较Java字符串时不使用==运算符。它比较内存引用,而不是实际值。而是使用String.equals(String)方法。
您的任务非常简单。您需要找出从第二个参数(字符0到第一个参数的长度)创建的子字符串是否等于第一个参数。如果是这样,则返回从第二个参数创建的子字符串(在第一次检查期间未使用的字符)。否则,只需返回第一个和第二个串联。当然,当您确定第一个参数不属于第二个参数时,会有一个特殊情况(您知道什么时候发生吗?)
我不会在这里发布最终程序,但我将为您提供您需要使用的方法(所有方法均来自String类):
length()
substring() (both versions: one and two arguments)
equals()
+ operator to concatenate strings
想一会儿,如果您仍然遇到问题,请来找我。