【问题标题】:Java Substring in if statement does not workif 语句中的 Java 子字符串不起作用
【发布时间】:2017-06-06 09:35:35
【问题描述】:

我正在尝试使用substring 方法删除字符串中的最后一个字符。 在 if 语句之外正常工作。但在它里面只是通过 if 语句并返回原始的String

public String getElkon(int p, int zbytek) {   
    System.out.println(zbytek);

    for (int i = 0; i < p; i++) {
        vysledek += elkon[i];
        vysledek += " ";
        System.out.println(vysledek);
    }
  ***if(zbytek != 0){
        vysledek = vysledek.substring(0, vysledek.length() - 1);
        return vysledek;
    }
    else{
        return vysledek;
    }***

}

【问题讨论】:

    标签: java string if-statement substring


    【解决方案1】:

    如果您不必从附加 String(s) 中删除尾随空格,您的代码会更简单。此外,还不清楚您为什么期望zbytek 控制trim。我想你想要if (p != 0)(因为那是你的循环哨兵)。我会使用StringJoiner 来实现这个

    public String getElkon(int p, int zbytek) {
        System.out.println(zbytek);
        StringJoiner sj = new StringJoiner(" ");
        for (int i = 0; i < p; i++) {
            sj.append(elkon[i]);
        }
        return sj.toString();
    }
    

    【讨论】:

    • 这里要注意的一点是,“StringJoiner”是为了便于与“Stream”一起使用而创建的。虽然在这里可以正常工作,但“StringBuilder”也可以。
    【解决方案2】:

    字符串中的最后一个字符是空格,因为您上次在for 循环中添加了它。

    要修剪if 语句之前的最后一个空格,您可以使用代码

    public String getElkon(int p, int zbytek) {   
        System.out.println(zbytek);
    
        for (int i = 0; i < p; i++) {
            vysledek += elkon[i];
            vysledek += " ";
            System.out.println(vysledek);
        }
    
        if (p > 0)
            vysledek = vysledek.substring(0, vysledek.length() - 1);
    
        if(zbytek != 0){    
           ...
        }
    
        return vysledek;     
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      相关资源
      最近更新 更多