【问题标题】:Given a array with a blank element how do I print all elements except the blank one?给定一个带有空白元素的数组,我如何打印除空白元素之外的所有元素?
【发布时间】:2015-11-28 18:24:29
【问题描述】:

我有一组称为votacoes 的字符。当我这样做时:

for (int i = 0; i < nDeputados; i++) {
    System.out.println(votacoes[i]);
}

输出是:

S
A

S
S
S
N
A

如您所见,索引 2 中有一个空白字符。

要打印除空白字符以外的所有内容,以下 if 的条件是什么?

for (int i = 0; i < nDeputados; i++) {
    if(???????????){
        System.out.println(votacoes[i]);
    }
}

【问题讨论】:

  • 什么是votacoesvotacoes[i] 返回什么? “空元素”是什么意思? (空字符串,空字符串...)
  • 修复了我的答案,适用于 char[]。你应该早点提供这些细节。

标签: java arrays element chars


【解决方案1】:

你可以使用 String isBlank 方法:

for (int i = 0; i < nDeputados; i++) {
    if(!StringUtils.isBlank(votacoes[i])){
    System.out.println(votacoes[i]);
    }
}

看这里: http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isBlank%28java.lang.String%29

【讨论】:

    【解决方案2】:
    for (int i = 0; i < nDeputados; i++) {
        if(!String.valueOf(votacoes[i]).matches("\\s")){
            System.out.println(votacoes[i]);
        }
    }
    

    这将跳过任何类型的space 字符并打印出连续输出。

    【讨论】:

    • 如果你投反对票,你也应该提供一个理由。
    • 现在您已经编辑了答案以使用 char[] 而不仅仅是字符串,这一行没有意义:if(!String.valueOf(votacoes[i]).equals("")) 由于 votacoes[i] 是一个字符,它总是有长度1,所以永远不会是“”。顺便说一句,你应该调用 String.isEmpty() 而不是 equals("")。
    • 是的,你是对的。代码“修剪”。我使用"",因为您不必在其中检查null。所以它在很多情况下对我来说都很好......但是,.equals() 更干净,实际上也可以很好地检查null
    【解决方案3】:
    for (int i = 0; i < nDeputados; i++)
    {
     if(Character.isAlphabetic(votacoes[i]))
    
          System.out.println(votacoes[i]);
    }
    

    如果传递的值是字母,Character.isAlphabetic() 方法返回 true。希望这会有所帮助:)

    【讨论】:

    • 谁说 OP 不想打印 -?仅提及“空元素”。
    • @Tunaki 你是对的。现在为什么我没有想到这一点
    • 非常感谢。这就像一个魅力,感谢你,我的算法现在可以正常工作了!
    • @Tunaki ,在这种情况下它可以工作,因为我的数组只能有字母字符
    • @Tunaki 谢谢,从现在开始我会尝试更清楚地理解问题:)
    【解决方案4】:

    使用此代码

          for (int k = 0; k < votacoes.length; k++) {
            if (votacoes[k]==' ') {
                k++;
            }
            System.out.println(votacoes[k]);
    

    希望它对你有用..

    【讨论】:

    • 如果最后一个字符是空格,这会给出一个很好的ArrayIndexOutOfBoundsException
    • @Tunaki 哦,是的,它只是从我的脑海中溜走,谢谢Character.isAlphabetic(array[k]) 我知道在这里会很完美
    【解决方案5】:
    char[] votacoes = {'S','A',' ','S','S','S','N','A'};
    for (char b : votacoes) {
        if(!Character.isWhitespace(b)) {
            System.out.println(b);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 2011-08-18
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多