Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向未定义大小的数组添加值_Java_Arrays_For Loop_Initializing - Fatal编程技术网

Java 向未定义大小的数组添加值

Java 向未定义大小的数组添加值,java,arrays,for-loop,initializing,Java,Arrays,For Loop,Initializing,我已经研究并尝试了几个小时来解决我的问题,但现实是,我找不到任何关于它的东西。这真的很简单。我需要初始化未定义大小的java数组,然后比较两者。在测试程序的过程中,当我将数组定义为特定长度时(例如) 代码将一直等待,直到我输入了六个对象,才能转到下一段代码,因为它正在等待定义为数组长度的6个整数。但是我不能使用 int[] array = {}; 这显然不起作用,因为array.length函数将为0 我的代码如下 import java.util.Scanner; import java.u

我已经研究并尝试了几个小时来解决我的问题,但现实是,我找不到任何关于它的东西。这真的很简单。我需要初始化未定义大小的java数组,然后比较两者。在测试程序的过程中,当我将数组定义为特定长度时(例如)

代码将一直等待,直到我输入了六个对象,才能转到下一段代码,因为它正在等待定义为数组长度的6个整数。但是我不能使用

int[] array = {};
这显然不起作用,因为array.length函数将为0

我的代码如下

import java.util.Scanner;
import java.util.Arrays;
public class Test {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);


        // My problem is in the definition of the arrays or the for loops defining them below.
        int[] list1 = new int[]; // undefined
        int[] list2 = new int[]; // undefined
        // ask user to fill the two arrays to see if they are equal
        System.out.print("Enter list one >> ");

        for (int i = 0; i < list1.length; i++){
            list1[i] = input.nextInt();
        }

        System.out.print("Enter list two >> ");

        for (int i = 0; i < list2.length; i++){
            list2[i] = input.nextInt();
        }


        // call the equality testing method and output whether or not the two lists are strictly identical or not.
        if (equals(list1, list2) == true)
            System.out.println("The two lists are strictly identical");
        else
            System.out.println("The two lists are not strictly identical");

    }

    // this method 
    public static boolean equals(int[] list1, int[] list2){
        boolean bool = false;
        if (Arrays.equals(list1, list2))
            bool = true;
        else
            bool = false;

        return bool;
    }
}
import java.util.Scanner;
导入java.util.array;
公开课考试{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//我的问题在于数组的定义或下面定义它们的for循环。
int[]list1=新int[];//未定义
int[]list2=新int[];//未定义
//让用户填充这两个数组,看看它们是否相等
系统输出打印(“输入列表一>>”;
for(int i=0;i>”;
for(int i=0;i
我需要初始化未定义大小的java数组

您需要使用ArrayList或在开始时询问长度

List<Integer> list1 = new ArrayList<>();
System.out.println("Enter numbers, with a blank line to end");
for (String line; !(line = input.nextLine()).trim().isEmpty(); ) {
     list1.add(Integer.parseInt(line));
}

// later
if (list1.equals(list2))
它显然无法工作,因为array.length函数无法工作


这就像预期的那样,并且
数组。长度总是
0
我仍然无法完成我真正想要完成的任务,但我已经用我的代码进行了妥协。它允许用户在输入整数之前指定长度

import java.util.Scanner;
导入java.util.array;
公开课考试{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.print(“第一个列表有多少个变量?”);
int n=input.nextInt();
int[]列表1=新的int[n];
System.out.print(“第二个列表有多少个变量?”);
n=input.nextInt();
int[]list2=新的int[n];
//让用户填充这两个数组,看看它们是否相等
系统输出打印(“输入列表一>>”;
for(int i=0;i>”;
for(int i=0;i}
我发现这是一个老问题,但我有一个相同的问题(或至少相似),找不到我正在搜索的答案。现在我相信我已经找到了答案,并愿意与大家分享。也许对某些人来说这会很方便

根据我的理解,这个问题是关于创建一个长度未定义的一维数组,这个数组的长度将随着扫描仪的输入而增加。我看到的很多答案都是关于使用ArrayList的。但我还是想知道如何用一维数组来实现。首先,让我与您分享代码,然后是解释:

public class Main {

    static Scanner scanner = new Scanner(System.in);
    final static int ARRAY_MAX_LENGTH = 400_000_000;

    public static void main(String[] args) {


        int[] numbers = createIntArray();

        displayArray(numbers);

    }

    public static int[] createIntArray() {
        int[] ints = new int[ARRAY_MAX_LENGTH];

        System.out.print("Enter numbers: ");
        for (int i = 0; i < ints.length; i++) {
            ints[i] = scanner.nextInt();
            if (ints[i] == 0) {
                break;
            }
        } return ints;
    }

    public static void displayArray(int[] ints) {
        for (int i = 0; i < ints.length; i++) {
            System.out.print(ints[i] + " ");
            if (ints[i] == 0) {
                break;
            }
        }
    }
}
如果您想使用这段代码,只需找出最大数组长度并使用它即可



对我来说,这个问题很有趣,但我肯定不会在大型项目中使用它。这根本没有效率。对于新手:如果您刚刚学习了一维数组,请耐心等待,ArrayList将出现在您以后的研究中,它可以使事情变得更简单。

初始化时的数组需要指定大小。对于未定义的大小,请使用数组列表、向量等。
if(equals(list1,list2)==true)
if(equals(list1,list2))
,在equals方法中,您可以使用
返回数组。equals(list1,list2)
软件(netbeans)会等到我输入了六个对象后再转到下一段代码
——这是因为您要循环6次才能添加到阵列?使用
int[]array=newint[6]是否存在java问题?您可以查看>如何在中创建动态数组java@ramazankul链接的格式是
[pretty](url)
所有内容都硬编码为6个元素,我认为没有可变数量的链接elements@phflack在这种情况下,没有理由创建一个未定义大小的数组,因为该大小将被定义为6。他说问题是
int[]数组=新整数[6]不是working@phflack也许netbeans和java语言之间的区别对于OP和s/he来说并不清楚
System.out.println("Enter the number of numbers, followed by the numbers");
int[] array1 = new int[input.nextInt()]; // enter the size first.
for (int i = 0; i < array1.length; i++)
    array[i] = input.nextInt();

// later
if (Arrays.equals(array1, array2))
int[] array = {};
public class Main {

    static Scanner scanner = new Scanner(System.in);
    final static int ARRAY_MAX_LENGTH = 400_000_000;

    public static void main(String[] args) {


        int[] numbers = createIntArray();

        displayArray(numbers);

    }

    public static int[] createIntArray() {
        int[] ints = new int[ARRAY_MAX_LENGTH];

        System.out.print("Enter numbers: ");
        for (int i = 0; i < ints.length; i++) {
            ints[i] = scanner.nextInt();
            if (ints[i] == 0) {
                break;
            }
        } return ints;
    }

    public static void displayArray(int[] ints) {
        for (int i = 0; i < ints.length; i++) {
            System.out.print(ints[i] + " ");
            if (ints[i] == 0) {
                break;
            }
        }
    }
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space