无法完成我的工作...虽然循环工作 - Java
Trouble Getting My Do...While Loop To Work - Java
我正在努力做到这一点,程序将继续请求输入 5 位数字,直到用户提供 5 位数字。当我 运行 以下内容时:
//import scanner to read keyboard input
import java.util.Scanner;
class NumberInverter {
public static void main(String[] args) {
//create a new Scanner object in the memory that reads from the input System.in
Scanner keyboard = new Scanner(System.in);
//display message propmt and input for number
//conditional statement loop to check if the length is any number other than 5
do {
System.out.print("Enter any 5 digit whole number you wish to invert!");
int num = keyboard.nextInt();
int numSize = String.valueOf(num).length();
} while(!isValid(numSize));
}
private static boolean isValid(int numSize){
if(numSize != 5){
System.out.println("Oops! Looks like you gave a number that isn't exactly a 5 digit whole number. Try again!");
return false;
} else return true;
}
}
我收到以下错误:
NumberInverter.java:20: error: cannot find symbol
} while(!isValid(numSize)); ^
symbol: variable numSize
location: class NumberInverter
1 error
我尝试了很多不同的东西,任何人都可以 java 帮助我吗?我是新手?
提前致谢!
num size 是在循环范围内声明的,您正试图在该范围外访问它。为此,请在 do 语句之前声明 numSize 并在循环内分配它。这样,变量在整个语句和循环内(用于赋值)都是可见的。
int numSize;
do {
// The rest of your code, all variables declared here are
// gone outside the brackets, however you can access the ones
// in outer scopes.
numSize = String.valueOf(num).length();
} while(!isValid(numSize));
有关不同类型范围的更多信息,请参阅此内容:https://www.geeksforgeeks.org/variable-scope-in-java/
变量 numSize
与 while
条件检查不在同一范围内。
在Java中,任何在块内声明的变量(被{}
包围的区域)都不能在该块外访问。在这种情况下,由于您是在循环内部声明 numSize
,因此循环的条件(在该块之外)无法访问它。每个块都会创建一个称为“块作用域”的东西,在其中创建的变量无法在其外部访问。
解决这个问题的方法非常简单:在与 while 循环相同的范围内声明变量。这可以通过将其放在 do
的正上方来完成。请注意,您只需要int numSize;
,在外面一次。当你在循环中分配给它时,你不要把 int
放在循环中,你只是做 numSize = ....
因为你正在分配给一个先前声明的变量。
您仍然可以从循环内部为变量赋值,但由于它最初是在循环外部声明的,因此循环外部的东西可以访问它。
int numSize;
do {
System.out.print("Enter any 5 digit whole number you wish to invert!");
int num = keyboard.nextInt();
numSize = String.valueOf(num).length();
} while(!isValid(numSize));
可以在 .
找到有关作用域的更多信息
创建局部变量 numSize。
例如:
//import scanner to read keyboard input
import java.util.Scanner;
class NumberInverter {
public static void main(String[] args) {
//create a new Scanner object in the memory that reads from the input System.in
Scanner keyboard = new Scanner(System.in);
int numSize;
// int numSize;
//display message propmt and input for number
//conditional statement loop to check if the length is any number other than 5
do {
System.out.print("Enter any 5 digit whole number you wish to invert!");
int num = keyboard.nextInt();
numSize = String.valueOf(num).length();
} while(!isValid(numSize));
}
private static boolean isValid(int numSize){
if(numSize != 5){
System.out.println("Oops! Looks like you gave a number that isn't exactly a 5 digit whole number. Try again!");
return false;
} else return true;
}
}
我正在努力做到这一点,程序将继续请求输入 5 位数字,直到用户提供 5 位数字。当我 运行 以下内容时:
//import scanner to read keyboard input
import java.util.Scanner;
class NumberInverter {
public static void main(String[] args) {
//create a new Scanner object in the memory that reads from the input System.in
Scanner keyboard = new Scanner(System.in);
//display message propmt and input for number
//conditional statement loop to check if the length is any number other than 5
do {
System.out.print("Enter any 5 digit whole number you wish to invert!");
int num = keyboard.nextInt();
int numSize = String.valueOf(num).length();
} while(!isValid(numSize));
}
private static boolean isValid(int numSize){
if(numSize != 5){
System.out.println("Oops! Looks like you gave a number that isn't exactly a 5 digit whole number. Try again!");
return false;
} else return true;
}
}
我收到以下错误:
NumberInverter.java:20: error: cannot find symbol
} while(!isValid(numSize)); ^
symbol: variable numSize
location: class NumberInverter
1 error
我尝试了很多不同的东西,任何人都可以 java 帮助我吗?我是新手? 提前致谢!
num size 是在循环范围内声明的,您正试图在该范围外访问它。为此,请在 do 语句之前声明 numSize 并在循环内分配它。这样,变量在整个语句和循环内(用于赋值)都是可见的。
int numSize;
do {
// The rest of your code, all variables declared here are
// gone outside the brackets, however you can access the ones
// in outer scopes.
numSize = String.valueOf(num).length();
} while(!isValid(numSize));
有关不同类型范围的更多信息,请参阅此内容:https://www.geeksforgeeks.org/variable-scope-in-java/
变量 numSize
与 while
条件检查不在同一范围内。
在Java中,任何在块内声明的变量(被{}
包围的区域)都不能在该块外访问。在这种情况下,由于您是在循环内部声明 numSize
,因此循环的条件(在该块之外)无法访问它。每个块都会创建一个称为“块作用域”的东西,在其中创建的变量无法在其外部访问。
解决这个问题的方法非常简单:在与 while 循环相同的范围内声明变量。这可以通过将其放在 do
的正上方来完成。请注意,您只需要int numSize;
,在外面一次。当你在循环中分配给它时,你不要把 int
放在循环中,你只是做 numSize = ....
因为你正在分配给一个先前声明的变量。
您仍然可以从循环内部为变量赋值,但由于它最初是在循环外部声明的,因此循环外部的东西可以访问它。
int numSize;
do {
System.out.print("Enter any 5 digit whole number you wish to invert!");
int num = keyboard.nextInt();
numSize = String.valueOf(num).length();
} while(!isValid(numSize));
可以在
创建局部变量 numSize。 例如:
//import scanner to read keyboard input
import java.util.Scanner;
class NumberInverter {
public static void main(String[] args) {
//create a new Scanner object in the memory that reads from the input System.in
Scanner keyboard = new Scanner(System.in);
int numSize;
// int numSize;
//display message propmt and input for number
//conditional statement loop to check if the length is any number other than 5
do {
System.out.print("Enter any 5 digit whole number you wish to invert!");
int num = keyboard.nextInt();
numSize = String.valueOf(num).length();
} while(!isValid(numSize));
}
private static boolean isValid(int numSize){
if(numSize != 5){
System.out.println("Oops! Looks like you gave a number that isn't exactly a 5 digit whole number. Try again!");
return false;
} else return true;
}
}