簡體   English   中英

如何在Java中用布爾值打印出數組的某些值?

[英]How would I print out certain values of an Array with booleans in Java?

我制作了一個程序,可以打印出可操縱的數組,我想重新打印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

問題是,只有在數組的最后一個元素有7個符號的true ,循環后validtrue 但是,即使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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM