我正在尝试使用try / catch块,但我无法从块中获取变量值。 我该怎么办?
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
System.out.print("Enter a number : ");
returnValue();
System.out.println(returnValue());
}
public static int returnValue() {
Scanner imp = new Scanner(System.in);
boolean loP = true;
do {
String num = imp.next();
try {
int Nums = Integer.parseInt(num);
loP = false;
} catch (Exception e) {
System.out.print("Please enter a number : ");
}
} while (loP);
imp.close();
}
}
答案 0 :(得分:1)
使用一些初始值在方法returnValue()的start处声明变量,否则它将显示从不初始化警告,并且将来它将帮助您进行调试。
答案 1 :(得分:0)
您只需要使用所需的scope声明变量。例如,只需在声明Nums
变量的地方声明loP
变量。
答案 2 :(得分:0)
只需在块外声明它们并为它们提供默认值。
public static int returnValue(){
Scanner imp = new Scanner(System.in);
boolean loP = true;
int Nums =0; //declare them outside the try...catch block and give them a default value
do {
String num = imp.next();
try {
Nums = Integer.parseInt(num);
loP = false;
} catch (Exception e) {
System.out.print("Please enter a number : ");
}
} while (loP);
imp.close();
}
}
答案 3 :(得分:0)
在类上使用private int。并从try / catche部分更新它。你可以从任何功能中使用它。
public class program{
private int something;
public int somemorething;
}
答案 4 :(得分:0)
尝试使用:
public static void main(String[] args) {
System.out.print("Enter a number : ");
System.out.println(returnValue());
System.out.print("Enter a number : ");
System.out.println(returnValue());
}
public static int returnValue() {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
do {
try {
String num = bufferedReader.readLine();
return Integer.parseInt(num);
} catch (Exception e) {
System.out.print("Please enter a number : ");
}
} while (true);
}