gpt4 book ai didi

java - 在知道构造函数的参数之前,如何初始化类对象?

转载 作者:行者123 更新时间:2023-12-01 18:15:45 25 4
gpt4 key购买 nike

在我的作业中,我应该创建一个程序,该程序使用 switch case 访问不同类的方法来执行某些操作。第一种情况接受用户输入,并且该输入在另一个类的构造函数中使用。但是,如果我在第一种情况下初始化类对象,那么在其他情况下我会收到错误,因为该对象可能尚未初始化。如何为具有我的方法的类创建该对象,并且仍然将 switch case 中提示的用户输入获取到构造函数中?

public class NumberList{

int length; int offset;

public NumberList(int length, int offset){ //constructor
this.length = length; this.offset = offset;
}

public void shift(int a){ //shift method
temp = numbers[0];
for (int i = 0; i < length-1; i++) {
numbers[i] = numbers[i+1];
}
numbers[length - 1] = temp;
}

假设这是我的类,具有移动数组元素的方法。我的主要方法是

public class assignment7{
public static void main(String[] args){

int choice;
do{
System.out.println("input choice");
choice = scan.nextInt();
switch(choice){

case '1':
System.out.println("input the array size.");
size = scan.nextInt();
System.out.println("input the array offset.");
offset = scan.nextInt();
NumberList numbasbrah = new NumberList(size, offset);
numbasbrah.printInfo();
break;
case '2':
numbasbrah.shift();
numbasbrah.printInfo();
break;
case '3': //quit
break;
}while(choice!=3);
}} //end main method

因此,如果我在 switch case 中创建 NumberList 对象,我会收到错误“变量可能尚未初始化”,但它需要在那里,以便我可以为构造函数添加用户输入。如何初始化对象,同时仍然能够在 switch case 中添加构造函数的信息?

最佳答案

问题是您在情况 2 中使用 numasbrah,但在情况 1 中创建它。

不过,没有什么会迫使您在进入案例 2 之前先经历案例 1。

如果有人选择了 2 而没有选择 1,那么程序将会失败。

有很多方法可以解决这个问题 - 包括在 switch 语句之外创建一个“默认”numasbrah。也许最简单的方法就是完全删除case 2并从case 1开始运行。

关于java - 在知道构造函数的参数之前,如何初始化类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com