卡在“除茎器”作业上

时间:2018-11-17 16:31:10

标签: java

我有一个学校作业,需要一些帮助。我们的任务是“等级:不适用 查看成绩信息。开启对话 截止时间: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;
 }

}

感谢您的时间和答案

编辑:阐明我的意思是“不工作”

1 个答案:

答案 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

想一会儿,如果您仍然遇到问题,请来找我。