返回从 String 的输入参数索引开始的字符串

Returning a string that begins at the input parameter index of the String

方法名称是getTheString()

Return类型是String

输入参数为int

我必须 return 一个字符串,该字符串从作为实例变量的字符串 str 的输入参数索引位置开始。 Return如果输入参数索引位置大于或等于字符串长度,则为空字符串。

一个例子是

如果str = “Hawaii”

getTheString(8) returns “ “

getTheString(2) returns “哇”

我不知道为什么当我执行它时没有任何反应,或者如何修复它,有人可以帮忙。


public class LoopM
{
   public int a, b;
   public String str;
   
   public LoopM(){
    }
   
   public String getTheString(int f){
       
       str = "Hawaii";
       
       int length = str.length();
       
       for(f = length; f < 10; f++){
           
           return str.substring(f);
        }
       
       return str.substring(f);
    }
   
   public static void main(String args[]){
       //used for testing

       LoopM me = new LoopM();
       me.getTheString(2);
      
    }
}




对此更新:

public class Test {
    public static void main(String[] args) {
        System.out.println(getTheString(2));
    }

    public static String getTheString(int f) {

        String str = "Hawaii";

        return (f > str.length() || f < 0) ? "" : str.substring(f);
    }

}

输出:

waii

您应该使用构造函数来设置 str 字段的值,而不是在 getTheString 方法中对其进行硬编码,而且其中带有 return 语句的循环有点奇怪。

您还应该检查输入参数是否有效(即,如果 str 不是 null 并且 f 不是负数且小于 str.length()

因此,代码可以改进如下:

public class LoopM {
    public int a, b;
    public String str;

    public LoopM() {
        this("Hawaii");
    }

    public LoopM(String str) {
        this.str = str;
    }
   
   public String getTheString(int f) {
       
       int length = null == str? -1 : str.length();
       
       return f > -1 && f < length ? str.substring(f) : "";
    }
   
   public static void main(String args[]){
       //used for testing

       LoopM me = new LoopM();
       System.out.printf("\"%s\"%n", me.getTheString(2));  // prints "waii"
       System.out.printf("\"%s\"%n", me.getTheString(10));  // prints ""
    }
}

return 语句由类似于 if-else 条件的三元条件组成。如果索引大于字符串的长度,它将 return " " 否则它将 return 来自输入索引的子字符串

public class Test {
    public static void main(String[] args) {
        System.out.println("String that begins at 2 index : "+getTheString(2)); // Output waii
        System.out.println("String that begins at 8 index : "+getTheString(8));// Output ""
    }

    public static String getTheString(int index) {

        String str = "Hawaii";

        return index > str.length() ? "" : str.substring(index);
    }

}