Java 对非静态方法的静态引用(在主方法中)
关于这个问题,我已经到处寻找我能理解的答案。我在写一个程序,用户输入一个数字,然后程序打印出这个数字,如果是奇数或偶数,或者是7的倍数 我在以下代码行中遇到此错误: 无法对非静态方法名称进行静态引用 这就是我的代码:Java 对非静态方法的静态引用(在主方法中),java,Java,关于这个问题,我已经到处寻找我能理解的答案。我在写一个程序,用户输入一个数字,然后程序打印出这个数字,如果是奇数或偶数,或者是7的倍数 我在以下代码行中遇到此错误: 无法对非静态方法名称进行静态引用 这就是我的代码: import java.util.Scanner; public class Multiples { int number1; String evenOdd; String multipleOr; public static void main(String[] args)
import java.util.Scanner;
public class Multiples {
int number1;
String evenOdd;
String multipleOr;
public static void main(String[] args) {
printMsg();
System.out.println("Enter a number: ");
getNum ();
evenOdd ();
multiple ();
System.out.println(number1 + " : " + evenOdd + " : " + multipleOr);
}
public static void printMsg() {
System.out.println("Welcome to the Multiplicity program.");
System.out.println("Enter a number and I will tell you if it is a multiple of 7 and if it is odd or even.");
return;
}
public int getNum() {
Scanner input = new Scanner (System.in);
number1 = input.nextInt();
return number1;
}
public String evenOdd(){
if (number1 / 2 == 0);
evenOdd = "EVEN";
if (number1 / 2 != 0);
evenOdd = "ODD";
return evenOdd;
}
public String multiple(){
if (number1 / 7 == 0);
multipleOr = "MULTIPLE";
if (number1 / 7 != 0);
multipleOr = "NOT";
return multipleOr;
}
}
真的不确定如何解决这个问题。我试着在所有的方法中加入静态变量,但是这些变量都被弄乱了
注意:它应该打印为Number:偶数:多个。将变量和方法设置为静态,这样可以解决问题。只需确保您理解静态和非静态之间的区别。静态变量和方法由特定类的所有对象实例共享,而非静态变量和方法特定于特定类的每个实例。对于你正在做的事情,让你的变量和方法都是静态的是正确的。或者,您可以在main方法中创建全局变量作为非静态变量,并将它们传递给每个需要它们的方法。如果您将一个方法声明为静态,那么它使用的所有外部变量也应该是静态的。您可以想到的另一种方法,创建类的实例并调用该实例上的方法/操作。静态方法在所有对象之间共享,这就是您想要的吗?哇。简单到让我的变量是静态的。谢谢你,先生!欢迎光临,很高兴我能帮忙!这是完全错误的解决方案。正确的解决方案是实例化一个对象并对其调用方法。
import java.util.Scanner;
public class Multiples {
int number1;
String evenOdd;
String multipleOr;
public static void main(String[] args) {
printMsg();
System.out.println("Enter a number: ");
getNum ();
evenOdd ();
multiple ();
System.out.println(number1 + " : " + evenOdd + " : " + multipleOr);
}
public static void printMsg() {
System.out.println("Welcome to the Multiplicity program.");
System.out.println("Enter a number and I will tell you if it is a multiple of 7 and if it is odd or even.");
return;
}
public int getNum() {
Scanner input = new Scanner (System.in);
number1 = input.nextInt();
return number1;
}
public String evenOdd(){
if (number1 / 2 == 0);
evenOdd = "EVEN";
if (number1 / 2 != 0);
evenOdd = "ODD";
return evenOdd;
}
public String multiple(){
if (number1 / 7 == 0);
multipleOr = "MULTIPLE";
if (number1 / 7 != 0);
multipleOr = "NOT";
return multipleOr;
}
}