我是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;
}
}
答案 0 :(得分:3)
您已在Scanner
方法的范围内声明了main
变量。 degree
方法不知道存在任何名为keyboard
的变量。如果您想阅读有关变量范围的更多信息(我相信您应该这样做),您可以查看资源here。它更详细地解释了您所面临的情况。
你可以做两件事
Scanner
成为一个类变量。班级变量:
对于类变量策略,您可以在主方法上方声明它,如:
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)
您可以通过两种方式解决此问题:
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);