0
4

3 回答 3

0

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

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);
    }

}
于 2020-09-23T18:29:06.600 回答
0

更新到这个:

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
于 2020-09-23T18:14:39.010 回答
0

您应该使用构造函数来设置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 ""
    }
}
于 2020-09-23T18:24:10.313 回答