【问题标题】:why return statement dose not return any thing?为什么 return 语句不返回任何东西?
【发布时间】:2022-12-04 18:20:01
【问题描述】:

我编写了代码来查找子序列字符串。如果给定的另一个字符串中存在的字符返回 true,否则返回 false。但它不返回任何我的代码中的问题。

import java.lang.String;
 public class Subsequence{
    public static void main(String args[]){
        String s="";
        String t="ajhbuuhyc";
        Solution obj=new Solution();
        obj.find(s,t);
    }
}
class Solution{
    public boolean find(String s,String t){
        int S=s.length();
        int T=t.length();
        int  i=0,j=0;
        if(S==0) return true;
        if(S>T || T==0) return false;
        while(i<S && j<T){
            if(s.charAt(i)==t.charAt(j)) i++;
            j++;
        }
        return i==S;
    }

【问题讨论】:

    标签: java string return subsequence


    【解决方案1】:

    看来问题出在 Subsequence 类的主要方法上。 main 方法不使用任何参数调用 find 方法,因此使用空字符串参数调用 find 方法。因为find方法会检查s字符串的长度是否为0,如果是就返回true,按照目前写的,如果从main方法中调用find方法会一直返回true。

    要解决此问题,您可以在 main 方法中调用 find 方法时将实际的字符串参数传递给该方法,如下所示:

    public boolean find(String s, String t) {
    int S = s.length();
    int T = t.length();
    int  i = 0, j = 0;
    
    if (s.isEmpty() || t.isEmpty()) return false;
    
    while (i < S && j < T) {
        if (s.charAt(i) == t.charAt(j)) i++;
        j++;
    }
    return i == S;
    }
    

    【讨论】: