// 这段代码意图要user输入一个不小于30的整数,并对潜在的error input做出反应import java.util.*;
public class a {
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int maxWidth;
boolean isIntegerMoreThan30 = true;
do {
String max_width;
System.out.print("Enter max width (at least 30): ");
max_width = in.next();
if ((max_width.length() == 0)||(max_width == null)) {
System.out.println(" - error: invalid input value.");
isIntegerMoreThan30 = false;
continue;
}
for (int index = 0; index < max_width.length(); index++) {
if (((int)max_width.charAt(index) < 48) || ((int)max_width.charAt(index) > 57)) {
System.out.println(" - error: invalid input value.");
isIntegerMoreThan30 = false;
break;
}
}
if (isIntegerMoreThan30) {
maxWidth = Integer.parseInt(max_width);
if (maxWidth < 30) {
System.out.println(" - error: invalid input value.");
isIntegerMoreThan30 = false;
}
}
}while (!isIntegerMoreThan30);
System.out.print(maxWidth);
}
}// compile 的结果是 variable maxWidth might not have been initialized
// System.out.print(maxWidth);
public class a {
public static void main (String[] args) {
Scanner in = new Scanner(System.in);
int maxWidth;
boolean isIntegerMoreThan30 = true;
do {
String max_width;
System.out.print("Enter max width (at least 30): ");
max_width = in.next();
if ((max_width.length() == 0)||(max_width == null)) {
System.out.println(" - error: invalid input value.");
isIntegerMoreThan30 = false;
continue;
}
for (int index = 0; index < max_width.length(); index++) {
if (((int)max_width.charAt(index) < 48) || ((int)max_width.charAt(index) > 57)) {
System.out.println(" - error: invalid input value.");
isIntegerMoreThan30 = false;
break;
}
}
if (isIntegerMoreThan30) {
maxWidth = Integer.parseInt(max_width);
if (maxWidth < 30) {
System.out.println(" - error: invalid input value.");
isIntegerMoreThan30 = false;
}
}
}while (!isIntegerMoreThan30);
System.out.print(maxWidth);
}
}// compile 的结果是 variable maxWidth might not have been initialized
// System.out.print(maxWidth);
int maxWidth; 改为 int maxWidth = 0;
boolean isIntegerMoreThan30;
do {
String max_width;
isIntegerMoreThan30 = true; // add one line
......
我就是没弄明白,在do-while loop里面,所有没有赋值的情况都会导致loop再次运行,只有当被赋值了之后才能往下走,为什么必须要在之前加上一句maxWidth = 0呢?