【问题标题】:creating array with elements determined by user/input使用由用户/输入确定的元素创建数组
【发布时间】:2013-04-18 01:20:31
【问题描述】:

尝试创建一个数组,并希望元素与输入的大小一样大。最终这应该需要 x 数量的数字,放在一个数组中,然后返回平均值。但首先我需要弄清楚如何在数组中放置元素的大小。

import java.util.Scanner;
import java.util.ArrayList;
//needs to be an array

public class statsv2
{
   public static void main (String args[])
    {
        int[] a= new int[5];
        Scanner sc=new Scanner(System.in);
        System.out.println("Please enter numbers...");
        for(int j=0;j<5;j++)
        {
            a[j]=sc.nextInt();
        }
     }
} 

所以我本质上希望“5”(出现两次)是用户不断输入新数字的次数

【问题讨论】:

  • 你将如何确定用户何时停止输入?
  • 数字用空格分隔或单击“输入”,直到用户输入一个空白(空)新行..

标签: java arrays


【解决方案1】:

首先,不要使用j&lt;5,而是使用yourArray.length

至于数组大小,这不能动态完成,你有三种选择:

1) 创建一个足够大的数组以使用户不会超出它,您必须进行一些额外的检查才能在用户输入结束时停止。

2) 使用ArrayList,您可以动态添加该ArrayList,然后在用户输入数据后调用“toArray()”以提取数组进行处理。

3) 完全跳过数组并使用ArrayList 来保存和处理输入。

【讨论】:

    【解决方案2】:

    数组的长度实际上不可能是动态的。我会做的其中一件事是将所有数据放入数组列表之类的结构中,然后当您到达输入末尾时,将该结构转换为数组。

    这样的事情会起作用。

    import java.util.*;
    import java.lang.Integer;
    
    public class wut {
      public static void main(String[] args) { 
        ArrayList<String> list = new ArrayList<String>();
        Scanner scan = new Scanner(System.in);
    
        while (scan.hasNext())
        {   
          list.add(scan.next());
        }   
    
        //^D received.
    
        int[] a = new int[list.size()];
        for (int i = 0; i < list.size();i++)
        {   
          a[i] = Integer.parseInt(list.get(i));
        }   
        System.out.println(Arrays.toString(a));
      }   
    }
    

    输出:

    javac *.java
    
    $ java wut
    3
    4
    5
    6
    7
    8
    ^D
    [3, 4, 5, 6, 7, 8]
    

    对于您要查找的输入类型,请查看此问题的答案:How to test for blank line with Java Scanner?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 2015-10-24
      • 2015-08-14
      • 2020-03-22
      • 2021-12-13
      • 1970-01-01
      • 2020-02-16
      相关资源
      最近更新 更多