在哪里关闭这个`输入`扫描仪?

时间:2015-08-22 22:00:12

标签: java java.util.scanner

package game1;
import java.util.Scanner;

public class toothpicks {

    private int number;
    public int HowMany()
    {
        do
        {
            System.out.print("Enter the No. of ToothPicks = ");
            Scanner input =new Scanner(System.in);
            number = input.nextInt(); 
            if(number<4)
            {
                System.out.print("ToothPicks Should be greater than 3\n");

            }

        }while(number<4);

        return number;
    }
}

在哪里可以关闭程序中的input扫描仪?如果我在程序结束时在返回语句input can not be resolved之前关闭它,但是如果我在循环中关闭它然后我无法实现我尝试使用此{{1 }} 方法?该怎么办 ?任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

您正在每个循环上创建Scanner的新实例。但是,你不需要这样做,所以你可以做到

Scanner input = new Scanner(System.in);
// do while loop goes here

然后在return声明之前关闭扫描仪。

答案 1 :(得分:1)

您可以在循环中声明Scanner(每次循环进行迭代时,看看您正在创建Scanner的新实例)

package game1;
import java.util.Scanner;

public class toothpicks {

 private int number;
    public int HowMany()
    {
        Scanner input =new Scanner(System.in);

        do
        {
            System.out.print("Enter the No. of ToothPicks = ");

            number = input.nextInt(); 
            if(number<4)
            {
                System.out.print("ToothPicks Should be greater than 3\n");

            }

        }while(number<4);

        input.close();

        return number;
    }
}

然后在return语句之前关闭它。

我希望它会对你有所帮助!

答案 2 :(得分:1)

input循环之前定义并初始化numberdo,并在do循环后立即关闭它。