[英]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
,循环后valid
为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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.