如何在方法中使用键盘输入

时间:2015-01-23 16:39:22

标签: java java.util.scanner

我是JAVA的新手,我在尝试实现此代码时遇到了麻烦。你能帮我吗?感谢

import java.util.Scanner;

public class Derivative {


    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);      
        System.out.println(degree());       
    }

    public int degree(){
        System.out.println("degree of function?");
        int n = keyboard.nextInt();
        return n;
    }

}    

3 个答案:

答案 0 :(得分:3)

您已在Scanner方法的范围内声明了main变量。 degree方法不知道存在任何名为keyboard的变量。如果您想阅读有关变量范围的更多信息(我相信您应该这样做),您可以查看资源here。它更详细地解释了您所面临的情况。

你可以做两件事

  1. 第一个是你可以使Scanner成为一个类变量。
  2. 第二种是将其传递给函数
  3. 班级变量:

    对于类变量策略,您可以在主方法上方声明它,如:

    public static Scanner keyboard = new Scanner(System.in);

    类方法的一个例子是:

    public static Scanner keyboard = new Scanner(System.in);
    
    public static void main(String[] args) {
    
        System.out.println(degree());
    
    }
    
    public static int degree() {
        System.out.println("degree of function?");
        int n = keyboard.nextInt();
        return n;
    }
    

    传递给功能:

    或者,您可以更改方法degree以使用扫描仪,例如:

    public static int degree(Scanner keyboard) {

    并称之为:

    degree(keyboard)

    将其传递给方法的一个例子是:

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println(degree(keyboard));
    
    }
    
    public static int degree(Scanner keyboard) {
        System.out.println("degree of function?");
        int n = keyboard.nextInt();
        return n;
    }
    

    <强>附加

    还应该注意,由于您是从degree方法(static)调用main,因此您应该使degree成为静态方法。通过更改:

    来实现

    public int degree() {

    为:

    public static int degree() {

答案 1 :(得分:0)

您可以通过两种方式解决此问题:

  • 您可以定义扫描程序的静态变量并在不改变方法程度的情况下访问它(当您从静态方法(例如main)访问它时将其设置为静态),如public static Scanner keyboard = new Scanner(System.in);
  • 将扫描程序作为方法参数传递,如degree(keyboard);,并在定义public static int degree(Scanner keyboard) {等方法时接受它。

答案 2 :(得分:0)

这些方法无法识别keyboard(您的扫描仪对象),因为它不在degree()方法的范围内。

我们如何确定它是否在范围内?很简单,只需查看花括号{}即可。大括号内声明的任何内容都可以被同一对括号内的其他人看到。

话虽如此,你可以这样做:

public int degree(){
    Scanner keyboard = new Scanner(System.in);      
    System.out.println("degree of function?");
    int n = keyboard.nextInt();
    return n;
}

将扫描仪键盘带入您的方法可以解决问题。 (现在它们在同一范围内)。

或者,您可以将keyboard声明为静态。

static Scanner keyboard = new Scanner(System.in);