如何解决java:数组未重新初始化,但根据用户的数组限制进行复制
这是我一直在处理的代码,问题是它不会重新初始化为我在菜单2中输入的内容,它只是复制数组限制。如果在数组中插入一个值,它将不会删除该数组的“ 0”值,而是将其保留为0,并将该数组复制到一个新数组中,这将添加一组包含目标结果的新行。感谢您的帮助。
`import java.util.Scanner;
import java.util.Arrays;
public class Testcode
{
public static void main(String[] args){
process nu = new process();
nu.m();
}
}
class process{
Scanner in = new Scanner(System.in);
int choice1 =0;
int limit1;
public void m(){
System.out.println(" ARRAY OPERATION");
System.out.println(" menu");
System.out.println(" [1] Create Array");
System.out.println(" [2] Insert Element");
System.out.println(" [3] Search");
System.out.println(" [4] Display");
System.out.println(" [5] Delete");
System.out.println(" [0] Stop");
System.out.print(" Enter choice:");
e();
}
public void e(){
//int check = 0;
int array[] = new int[limit1];
choice1 = in.nextInt();
cls();
if (choice1 == 1)
{
System.out.println("Create Array");
System.out.println("Enter the limit of your array: ");
limit1 = in.nextInt();
if(limit1 <5){
System.out.println("Error: Minimum limit exceeded");
System.out.println("Going back to main menu");
m(); //loop to main menu
}
if(limit1 >20){
System.out.println("Error: Maximum limit exceeded");
System.out.println("Going back to main menu");
m(); //loop to main menu
}
System.out.println("An array with a limit of " + limit1 + " has been created");
m();
}
if(choice1 == 2)
{
System.out.println("Enter the " + limit1 + " numbers now.");
for (int i = 0 ; i < array.length; i++ ) {
array[i] = in.nextInt();
}
System.out.println("You have entered the "+ limit1 + " numbers");
m();
}
if(choice1 == 4){
System.out.println(Arrays.toString(array));
}
}
private void cls(){
System.out.print('\u000C');
}
}
`
Output after inserting a value inside the array
解决方法
让我们重申您的程序如何工作
- 程序首次启动,创建
process
类的新实例。 - 调用方法
m()
,并显示菜单。 - 从
m()
中调用另一种方法e()
,该方法将创建一个新的array
,其限制为0
(因为limit1
的默认值为0)。数组=[]
的值-因为没有元素。 - 您输入选项“ 1”,现在输入限制(现在说
limit1 = 6
) - 您在上面定义的原始数组不受影响。您只是更改了
limit1
变量,而不是数组本身。 - 现在,流程返回到
m()
方法,并再次显示MENU。 - 您输入的选项为
2
,以输入数组元素。 - 在方法
e()
中创建了一个新数组,但是具有limit1
的前一个值,即6。因此,将创建int[] array = new int[6]
,然后输入元素。 li>
代码的问题是,每当用户输入选择时,您都在重新创建数组。您需要做的是在类process
中声明数组变量
例如:
class process{
Scanner in = new Scanner(System.in);
int choice1 =0;
int limit1;
int[] array;
接下来,在方法e()
中,通过删除行来删除数组的创建
int array[] = new int[limit1];
在选择1中要创建数组的位置,输入限制时添加以下行。
limit1 = in.nextInt();
array = new int[limit1];
此时,现在仅在用户按下1时才实际创建数组。 这应该可以修复您的程序。
,我认为您应该只在顶部初始化limit1,这可能是问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。