【问题标题】:How would I print out certain values of an Array with booleans in Java?如何在 Java 中打印出带有布尔值的数组的某些值?
【发布时间】:2015-08-18 23:28:40
【问题描述】:

我制作了一个打印出操纵数组的程序,我想重新打印 pass[i] 数组中长度等于 7 的所有值,但 Java 似乎只重新打印整个集合。我猜我在处理布尔值时做错了什么......

String[] pass = new String[cnt];
int[] range = new int[cnt];
int[] arr = new int[cnt];
boolean valid;

for (int i = 0; i < cnt; i++) {
    pass[i] = afname[i] + asname[i];
    if (pass[i].length() == 7) {
        System.out.println(pass[i]);
        valid = true;
    } else {
        valid = false;
        if ((7 - pass[i].length()) >= 3) {
            range[i] = (int) Math.pow(10, (7 - pass[i].length())) - 100;
            System.out.println(pass[i] + range[i]);
        } else {
            if ((7 - pass[i].length()) == 2) {
                range[i] = 99;
                System.out.println(pass[i] + range[i]);
            } else {
                range[i] = 9;
                System.out.println(pass[i] + range[i]);
            }
        }
    }
}

if(valid){
     for(int i=0; i<cnt; i++){
        System.out.println(pass[i]);
     }
  }
  else{System.out.println("Cannot print");}

没有 if(valid) 语句的输出...

jbeebee
span900
baroura
apentz9
swillia
ajenn99

使用 if(valid) 语句输出...

jbeebee
span900
baroura
apentz9
swillia
ajenn99
Cannot print

【问题讨论】:

  • if(valid = true) = 是赋值运算符,它将true 分配给valid,然后评估为if(true),您需要的是比较运算符==,甚至更好地跳过@ 987654331@ 部分,因为它是多余的并且使您的代码容易出错if (valid)
  • 我现在说,如果(有效)但 Java 仍然不会打印任何东西
  • @Pshemo 我应该在哪里发布这类问题?
  • @tuxi 如果这不是唯一的问题,那么只需 edit 你的代码,你的问题就会成为话题。
  • 您不能在for-loop 之后添加else 子句

标签: java arrays if-statement for-loop boolean


【解决方案1】:

问题是 valid 只有在数组的 last 元素有 7 个符号时才会在循环后变为 true。但是,即使 valid 在循环之后将是 true,您也会打印整个数组。但正如我从您的问题中了解到的那样,您只需要打印带有 7 个符号的字符串。

一种方法是创建另一个数组(或List)来存储包含 7 个符号的字符串。

String[] pass = new String[cnt];
int[] range = new int[cnt];
int[] arr = new int[cnt];
List<String> valids = new ArrayList<>();

for (int i = 0; i < cnt; i++) {
    pass[i] = afname[i] + asname[i];
    if (pass[i].length() == 7) {
        System.out.println(pass[i]);
        valids.add(pass[i]);
    } else {
        if ((7 - pass[i].length()) >= 3) {
            range[i] = (int) Math.pow(10, (7 - pass[i].length())) - 100;
            System.out.println(pass[i] + range[i]);
        } else {
            if ((7 - pass[i].length()) == 2) {
                range[i] = 99;
                System.out.println(pass[i] + range[i]);
            } else {
                range[i] = 9;
                System.out.println(pass[i] + range[i]);
            }
        }
    }
}

if(valids.isEmpty()){
    System.out.println("No entries with length of 7");
} else {
    System.out.println("Entries with length of 7:");
    for(String s : valids){
        System.out.println(s);
    }
}

另一种方法是创建boolean数组,如果pass的对应元素具有所需长度,则将其元素标记为true

您也可以在没有valid 变量的情况下简单地再次检查长度。

for(String s : pass){
    if(s.length() == 7) {
        System.out.println(s);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2011-10-26
    • 2021-11-13
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多