如何在块外使用变量(在try / catch块内)?

时间:2016-12-11 11:09:59

标签: java methods try-catch java.util.scanner do-while

我正在尝试使用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();
    }
}

5 个答案:

答案 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);
}