10.java 查询2维数组中某个值,通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length && !found;i++) {
for(int j=0;j<arr[i].length;j++){
System.out.println(“i=” + i + “,j=” + j);
if(arr[i][j] == 5) {
found = true;
break;
}
}
}
1.1抛出异常也可以跳出多重循环
try {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("i=" + i + "; j=" + j);
if (j == 3) {
throw new Exception();
}
}
}
} catch (Exception e) {
System.out.println("e");
}
1.2break跳出当前循环,通过内部跳出条件控制跳出外部循环
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
System.out.println("i="+i+"; j="+j);
if(j==3) {
i=4;
break;
}
}
}
1.3标号方式
ok:
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
System.out.println(“i=” + i + “,j=” + j);
if(j == 5) break ok;
}
}
1.4替换手机号 ,邮箱号为*
// 邮箱:
// 1、显示后缀
// 2、显示前2位,后1位数字。 当3位数时,只显示中间1位。当2位数时,全部显示
public static String processEmail(String email) {
String ret = null;
if (StringUtils.isNotBlank(email)) {
String suffix = email.substring(email.lastIndexOf("@"));
String name = email.substring(0, email.lastIndexOf("@"));
if (name.length() == 3) {
name = "*" + name.charAt(1) + "*";
} else if (name.length() > 3) {
char[] arr = name.toCharArray();
for (int i = 2; i < arr.length - 1; i++) {
arr[i] = '*';
}
name = String.valueOf(arr);
}
ret = name + suffix;
}
return ret;
}
// 手机:显示前3位,后4位数字。 其它隐藏
public static String processPhone(String phone) {
String ret = null;
if (StringUtils.isNotBlank(phone)) {
char[] arr = phone.toCharArray();
for (int i = 3; i < arr.length - 4; i++) {
arr[i] = '*';
}
ret = String.valueOf(arr);
}
return ret;
}