如何在Java中使用布尔值打印出Array的某些值?

时间:2015-06-04 11:13:54

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

我制作了一个打印出被操纵数组的程序,我想重新打印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(有效)声明的输出......

jbeebee
span900
baroura
apentz9
swillia
ajenn99

使用if(有效)语句输出...

jbeebee
span900
baroura
apentz9
swillia
ajenn99
Cannot print

1 个答案:

答案 0 :(得分:0)

问题是,只有当数组的 last 元素有7个符号时,valid才会在循环之后true。但是,即使循环后validtrue,也会打印整个数组。但是我从你的问题中理解你只需要打印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数组,如果true的相应元素需要长度,则将其元素标记为pass

另外,您可以在没有valid变量的情况下再次检查长度。

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