Java 调用非静态方法时遇到问题
我目前正在做一个学校项目,我想我的程序能够调用一个非静态的方法,它仍然可以前后移动我当前的号码。我不知所措。我到底该怎么办?这是我迄今为止的编码,除了实现非静态选项之外,一切都正常Java 调用非静态方法时遇到问题,java,Java,我目前正在做一个学校项目,我想我的程序能够调用一个非静态的方法,它仍然可以前后移动我当前的号码。我不知所措。我到底该怎么办?这是我迄今为止的编码,除了实现非静态选项之外,一切都正常 import java.util.Scanner; public class PictureViewer { final static int MAX_NUMBER = 8; final static int MIN_NUMBER = 1; public static v
import java.util.Scanner;
public class PictureViewer {
final static int MAX_NUMBER = 8;
final static int MIN_NUMBER = 1;
public static void main(String[] args) {
showMenu();
}
public static void showMenu() {
Scanner input = new Scanner(System.in);
int current_number = MIN_NUMBER;
boolean Continuation = true;
while (Continuation) {
System.out.println("Select One of the Options");
System.out.println("Option 1: Forward");
System.out.println("Option 2: Backward");
System.out.println("Option 3: CreateFileName");
System.out.println("Option 4: CreateRandomName");
System.out.println("Option 5: Non-Static Forward");
int Menu_Option = input.nextInt();
switch (Menu_Option) {
case 1:
current_number = forward(current_number);
System.out.println("The Current Number is: " + current_number);
break;
case 2:
current_number = backward(current_number);
System.out.println("The Current Number is: " + current_number);
break;
case 3:
String fileName = createFileName(current_number);
System.out.println("File Name: " + fileName);
break;
case 4:
fileName = createRandomName(current_number);
System.out.println("File Name: " + fileName);
break;
}
}
}
public static int forward(int current_number) {
if (current_number >= MAX_NUMBER) {
System.out.println(MIN_NUMBER);
current_number = MIN_NUMBER;
} else {
System.out.println(current_number++);
}
return current_number;
}
public static int backward(int current_number) {
if (current_number <= MIN_NUMBER) {
System.out.println(current_number);
current_number = MIN_NUMBER;
} else current_number --; {
}
return current_number;
}
public static String createFileName(int current_number) {
return "Picture" + current_number + ".gif";
}
public static String createRandomName(int current_number) {
current_number = MIN_NUMBER + (int) (Math.random() * MAX_NUMBER);
return "Picture" + current_number + ".gif";
}
public void forward () {
// overloaded method, use global variable as input and output
}
public void backward () {
// overloaded method, use global variable as input and output
}
}
import java.util.Scanner;
公共类图片查看器{
最终静态整数最大值=8;
最终静态整数最小值=1;
公共静态void main(字符串[]args){
showMenu();
}
公共静态无效显示菜单(){
扫描仪输入=新扫描仪(System.in);
int当前_编号=最小_编号;
布尔延拓=真;
while(续){
System.out.println(“选择一个选项”);
System.out.println(“选项1:远期”);
System.out.println(“选项2:向后”);
System.out.println(“选项3:CreateFileName”);
System.out.println(“选项4:CreateRandomName”);
System.out.println(“选项5:非静态远期”);
int Menu_Option=input.nextInt();
开关(菜单选项){
案例1:
当前_编号=正向(当前_编号);
System.out.println(“当前编号为:“+当前编号”);
打破
案例2:
当前_编号=向后(当前_编号);
System.out.println(“当前编号为:“+当前编号”);
打破
案例3:
字符串文件名=createFileName(当前_编号);
System.out.println(“文件名:”+文件名);
打破
案例4:
文件名=createRandomName(当前编号);
System.out.println(“文件名:”+文件名);
打破
}
}
}
公共静态整数转发(整数当前_编号){
如果(当前数量>=最大数量){
系统输出打印项次(最小值);
当前_编号=最小_编号;
}否则{
System.out.println(当前_number++);
}
返回当前_编号;
}
公共静态int向后(int当前_编号){
如果(当前编号您不需要将所有方法定义为static
,以便从main
调用。您可以在main
中创建一个对象并调用相同的方法。这是我要做的:
使所有方法(除main
)非静态(即删除static
关键字)
更改main
方法实现以创建PictureViewer
类的对象,并调用showMenu
,例如
publicstaticvoidmain(字符串[]args){
新建PictureViewer().showMenu();
}
要从main
调用,您不需要将所有方法都定义为static
。您可以在main
中创建一个对象并调用相同的方法。这就是我要做的:
使所有方法(除main
)非静态(即删除static
关键字)
更改main
方法实现以创建PictureViewer
类的对象,并调用showMenu
,例如
publicstaticvoidmain(字符串[]args){
新建PictureViewer().showMenu();
}
好的,现在几乎是一切,请像愿意学习的人一样更好地阐述你的问题,不仅仅是“不起作用”,只是一个免费的建议;-)
import java.util.Scanner;
公共类图片查看器{
最终静态整数最大值=8;
最终静态整数最小值=1;
私钥号码;
公共静态void main(字符串[]args){
showMenu();
}
公共静态无效显示菜单(){
扫描仪输入=新扫描仪(System.in);
int当前_编号=最小_编号;
布尔延拓=真;
while(续){
System.out.println(“选择一个选项”);
System.out.println(“选项1:远期”);
System.out.println(“选项2:向后”);
System.out.println(“选项3:CreateFileName”);
System.out.println(“选项4:CreateRandomName”);
System.out.println(“选项5:非静态远期”);
int Menu_Option=input.nextInt();
开关(菜单选项){
案例1:
当前_编号=正向(当前_编号);
System.out.println(“当前编号为:“+当前编号”);
打破
案例2:
当前_编号=向后(当前_编号);
System.out.println(“当前编号为:“+当前编号”);
打破
案例3:
字符串文件名=createFileName(当前_编号);
System.out.println(“文件名:”+文件名);
打破
案例4:
文件名=createRandomName(当前编号);
System.out.println(“文件名:”+文件名);
打破
案例5:
PictureViewer pv=新PictureViewer();
pv.setCurrentNumber(当前_编号);
pv.forward();
current_number=pv.getCurrentNumber();
System.out.println(“当前编号为:“+当前编号”);
打破
}
}
}
公共静态整数转发(整数当前_编号){
如果(当前数量>=最大数量){
系统输出打印项次(最小值);
当前_编号=最小_编号;
}否则{
System.out.println(当前_number++);
}
返回当前_编号;
}
公共静态int向后(int当前_编号){
如果(当前的数字OK now几乎就是一切,请像愿意学习的人一样更好地阐述你的问题,不仅仅是“不起作用”,只是一个免费的建议;-)
import java.util.Scanner;
公共类图片
import java.util.Scanner;
public class PictureViewer {
final static int MAX_NUMBER = 8;
final static int MIN_NUMBER = 1;
private int currentNumber;
public static void main(String[] args) {
showMenu();
}
public static void showMenu() {
Scanner input = new Scanner(System.in);
int current_number = MIN_NUMBER;
boolean Continuation = true;
while (Continuation) {
System.out.println("Select One of the Options");
System.out.println("Option 1: Forward");
System.out.println("Option 2: Backward");
System.out.println("Option 3: CreateFileName");
System.out.println("Option 4: CreateRandomName");
System.out.println("Option 5: Non-Static Forward");
int Menu_Option = input.nextInt();
switch (Menu_Option) {
case 1:
current_number = forward(current_number);
System.out.println("The Current Number is: " + current_number);
break;
case 2:
current_number = backward(current_number);
System.out.println("The Current Number is: " + current_number);
break;
case 3:
String fileName = createFileName(current_number);
System.out.println("File Name: " + fileName);
break;
case 4:
fileName = createRandomName(current_number);
System.out.println("File Name: " + fileName);
break;
case 5:
PictureViewer pv = new PictureViewer();
pv.setCurrentNumber(current_number);
pv.forward();
current_number = pv.getCurrentNumber();
System.out.println("The Current Number is: " + current_number);
break;
}
}
}
public static int forward(int current_number) {
if (current_number >= MAX_NUMBER) {
System.out.println(MIN_NUMBER);
current_number = MIN_NUMBER;
} else {
System.out.println(current_number++);
}
return current_number;
}
public static int backward(int current_number) {
if (current_number <= MIN_NUMBER) {
System.out.println(current_number);
current_number = MIN_NUMBER;
} else
current_number--;
{
}
return current_number;
}
public static String createFileName(int current_number) {
return "Picture" + current_number + ".gif";
}
public static String createRandomName(int current_number) {
current_number = MIN_NUMBER + (int) (Math.random() * MAX_NUMBER);
return "Picture" + current_number + ".gif";
}
public void forward() {
// overloaded method, use global variable as input and output
this.currentNumber = this.currentNumber +1;
}
public void backward() {
// overloaded method, use global variable as input and output
}
public int getCurrentNumber() {
return currentNumber;
}
public void setCurrentNumber(int currentNumber) {
this.currentNumber = currentNumber;
}
showOptions()
new PictureViewer().showOptions();