在 java 中关闭扫描器时无法访问代码?
Unreachable code when closing scanner in java?
当我尝试关闭 myScanner 时,我在 myScanner.close 下看到一条红线,告诉我这是无法访问的代码。我做错了什么?
public class crypt {
static final char FIRST = ' ';
static final char LAST = ']';
static final int RANGE = LAST-FIRST+1;
public static void main(String[] args) {
safe("");
}
public static boolean safe(String word) {
Scanner myScanner = new Scanner(System.in);
word = myScanner.nextLine();
String upper = word.toUpperCase();
for (int i=0; i<upper.length(); i++) {
char c = upper.charAt(i);
if (c < FIRST && c > LAST) {
return true;
}
}
return false;
myScanner.close();
}
这一行:
return false;
停止函数return结果为“false”,所以这条语句后面的代码不会执行.
此外,您应该在使用后关闭扫描仪,因此请先移动
myScanner.close();
statement BEFORE "return false;",并将其添加到 "return true;" 语句之前。
一旦调用了return语句,下一行将不会执行,从而导致编译错误。
您需要将 myScanner.close();
移动到 'return false;' 之前的行。另一件需要注意的事情 - 当你 return 为真时你并没有关闭扫描仪。您可能需要在 return true;
前添加 myScanner.close();
。
public static boolean safeToUse(String plaintext) {
Scanner myScanner = new Scanner(System.in);
plaintext = myScanner.nextLine();
String upper = plaintext.toUpperCase();
for (int i=0; i<upper.length(); i++) {
char c = upper.charAt(i);
if (c < FIRST && c > LAST) {
myScanner.close(); //Close the scanner before you return true
return true;
}
}
myScanner.close(); //close the scanner before you return.
return false;
}
当您在函数内部时,代码将不会在您之后执行 return
。将 return
视为代码中的停止点。当它到达这一点时,它将转到调用 method/function(在您的情况下为 safeToUse())的位置。
单步执行程序是一种跟踪和更好地理解代码执行的好方法,尽管您必须先进行建议的更改才能使其编译。
当我尝试关闭 myScanner 时,我在 myScanner.close 下看到一条红线,告诉我这是无法访问的代码。我做错了什么?
public class crypt {
static final char FIRST = ' ';
static final char LAST = ']';
static final int RANGE = LAST-FIRST+1;
public static void main(String[] args) {
safe("");
}
public static boolean safe(String word) {
Scanner myScanner = new Scanner(System.in);
word = myScanner.nextLine();
String upper = word.toUpperCase();
for (int i=0; i<upper.length(); i++) {
char c = upper.charAt(i);
if (c < FIRST && c > LAST) {
return true;
}
}
return false;
myScanner.close();
}
这一行:
return false;
停止函数return结果为“false”,所以这条语句后面的代码不会执行.
此外,您应该在使用后关闭扫描仪,因此请先移动
myScanner.close();
statement BEFORE "return false;",并将其添加到 "return true;" 语句之前。
一旦调用了return语句,下一行将不会执行,从而导致编译错误。
您需要将 myScanner.close();
移动到 'return false;' 之前的行。另一件需要注意的事情 - 当你 return 为真时你并没有关闭扫描仪。您可能需要在 return true;
前添加 myScanner.close();
。
public static boolean safeToUse(String plaintext) {
Scanner myScanner = new Scanner(System.in);
plaintext = myScanner.nextLine();
String upper = plaintext.toUpperCase();
for (int i=0; i<upper.length(); i++) {
char c = upper.charAt(i);
if (c < FIRST && c > LAST) {
myScanner.close(); //Close the scanner before you return true
return true;
}
}
myScanner.close(); //close the scanner before you return.
return false;
}
当您在函数内部时,代码将不会在您之后执行 return
。将 return
视为代码中的停止点。当它到达这一点时,它将转到调用 method/function(在您的情况下为 safeToUse())的位置。
单步执行程序是一种跟踪和更好地理解代码执行的好方法,尽管您必须先进行建议的更改才能使其编译。