根据输入的总数增加数组大小

时间:2015-06-12 15:02:51

标签: java arrays

基于输入数组的总数量,我有一个创建数组的问题。

本质上,该程序应该如下工作:提示用户输入n个数字进入数组。因此,直到用户输入' 000'作为输入,将提示用户输入新号码。

注意:对于此数组,我不希望用户输入他们想要为数组大小输入的数字量。相反,我希望用户继续输入随机数,直到''然后,输入已经输入到阵列中的数字的总数是这种数组的大小。

例如:如果我们有int array [] = {1,2,4,6},这将自动将数组大小设置为4,而不实际明确地将数组大小声明为4个元素。类似地,使用我的代码,我希望将用户输入的数字添加到数组中,然后根据用户输入的数字量自动给出数组大小。

请务必注意,在用户输入所有n个数字之前,我们 知道数组的长度。

我尝试过一个骨架,但它返回一个找不到符号的错误:

代码:

font-size: 0
setArray.java:19: error: cannot find symbol
    System.out.print("Array Size: " + array.length);
      symbol:    variable array
      location:  class setArray
    1 error

6 个答案:

答案 0 :(得分:2)

这里有一些错误。首先是了解你为什么会立即得到错误。变量array在while循环的范围内声明。它在这个循环之外是看不到的。这就是编译器抱怨的原因。

第二个是数组的大小(如果在循环之外声明)将始终为1.从我对你所写的内容的理解来解决你所描述的问题表明你没有解决问题正确。

虽然您不知道要输入的数组的最终长度;你需要存储输入的值(我的推论)来填充最终的数组。要存储用户输入的值,您需要一个随输入增长的列表。

List<Integer> values = new ArrayList<>();

while (number != stopInput) {
  System.out.print("Enter a number: ");
  values.add(Integer.valueOf(input.nextInt()));
}

Integer[] array = values.toArray(new Integer[values.size()]);

答案 1 :(得分:1)

首先,编译错误是因为markers[i][j].setMap(null); markers.setMap(null); var markers = [ ['office', 'Albania', 42.158410, 19.940845], ['production plant', 'Albania', 40.198905, 20.039722], ['R&D service', 'Albania', 41.090835, 19.545337], ['office', 'Algeria', 28.164666, 3.160335] ]; `Uncaught TypeError: markers[i][j].setMap`行中看不到array变量。这是因为它在while循环中声明,因此只在while循环中可见。

要使整个方法可见,请在while循环之前声明它。

其次,数组无法调整大小。您将数组声明为特定大小,并且无法添加或删除元素。

我的建议是使用System.out.println。在循环之前声明一个,并在循环内添加新数字。循环之后,大小应该是输入的数量。

最后,ArrayList000之间没有区别。 0是有效的输入数字吗?

答案 2 :(得分:0)

您可以使用

List<Integer> array=new ArrayList<Integer>();
while(number != stopInput) {
      System.out.print("Enter a number: ");
      number = input.nextInt();
      array.add(number);
  }   

答案 3 :(得分:0)

这听起来像java.util.ArrayList的作业 - 这是一个没有固定大小的数组,并且随着你自动为它添加值而增长。

答案 4 :(得分:0)

导致错误的原因是您只在while循环的范围内创建数组。您需要在循环外创建它。其次,标准数组不是动态的,因此您需要设置大小并根据需要增加它,或者只需使用ArrayList

的伪:

-- there is no built-in type for text ranges neither,
-- but it can can be created fairly easily:
CREATE TYPE textrange AS RANGE (
  SUBTYPE = text
);

ALTER TABLE table_name
  ADD CONSTRAINT table_name_exclusion
  EXCLUDE USING gist ((textrange(least(cola, colb), greatest(cola, colb))) WITH -|-);

-- the exclusion constraint above does not handle all situations:

ALTER TABLE table_name
  ADD CONSTRAINT table_name_check
  CHECK (cola is distinct from colb); -- without this, empty ranges could be created,
                                      -- which are not adjacent to any other range

CREATE UNIQUE INDEX table_name_unique
  ON table_name ((ARRAY[least(cola, colb), greatest(cola, colb)]));
     -- without this, duplicated rows could be created,
     -- because ranges are not adjacent to themselves

答案 5 :(得分:0)

如果您真的想使用数组,可以采用以下方法

public static void main(String[] args){
    STOP_ENTRY = "000";
    scan = new Scanner(System.in);
    entry = "";
    while(true){
        System.out.print("Enter #: ");
        String tempS = scan.nextLine();
        if(tempS.equals(STOP_ENTRY)) break;
        else entry += tempS + ":";
    }
    String[] split = entry.split(":");
    int[] intArray = new int[split.length];
    System.out.println("Length of created intArray = " + intArray.length); //length of created array

    for(int i = 0; i < intArray.length; i++){
        intArray[i] = Integer.parseInt(split[i]);
        System.out.println("intArray[" + i + "] => " + String.valueOf(intArray[i]));
    }

}

我建议使用一个ArrayList,因为它会在你添加一个元素时动态改变大小,但做你喜欢的任何事情。

重要提示,这不会处理您可能不想要的任何恶意条目(字符,符号),如果输入则会出错,如果需要,可以轻松添加