【问题标题】:how to give multiple array input without getting array ouf of bound exception如何在不让数组超出范围异常的情况下提供多个数组输入
【发布时间】:2020-01-30 17:30:36
【问题描述】:

`我在一个数组中给出了 6 个值,但我希望它是动态的,这样我就不会因为我给出的输入而得到一个数组越界异常。例如,我希望同一行中的“PRINT”不在换行符中。

控制台输入

```
4
3.176 2
0.5 0.5
4 4
2 4
1 1.5 4 4 PRINT


从控制台获取输入的主类。

public static void main(String args[]) throws IOException
    {
        Scanner scanner = new Scanner(System.in);
        int numpoints = 6;

        BoundingBox b = new BoundingBox(numpoints);
        double x[] = new double[6];
        int counter = 0;
        while(scanner.hasNext()){
            String line = scanner.nextLine();
            if(line.equals("PRINT")){break;}
            //Inorder to use TEST WITH COUNT PLEASE UNCOMMENT IT .
            //if(line.equals("COUNT")){break;}
            String lineArr[]  = line.split(" ");
            Double xD = Double.valueOf(lineArr[0]);
            x[0] = (double)xD;

            if(counter == 0) {
                x[1] = 0.0;
                counter++;
            }else {
            Double yD = Double.valueOf(lineArr[1]);
            x[1] = (double)yD;
            }
            Double zD = 0.0;
            if(lineArr.length>=6){
            zD = Double.valueOf(lineArr[2]);
            x[2] = (double)zD;

            Double wD = 0.0;
            wD = Double.valueOf(lineArr[3]);
            x[3] = (double)wD;

            Double yD = 0.0;
            yD = Double.valueOf(lineArr[4]);
            x[4] = (double)yD;

            Double id=0.0;
            yD = Double.valueOf(lineArr[5]);
            x[5] = (double)id;






            }
            //System.out.println("xD, yD, zd,  wd)= "+xD+"+"+"+zD+"+" + wD+");
             b.build(x);

        }


        System.out.println("\n ");
        b.putNew();
   }

【问题讨论】:

    标签: java arrays core


    【解决方案1】:

    Java 中的数组必须在运行时以固定大小初始化。一旦设置了它的大小,就无法更改。

    如果要存储项目列表,可以使用List

    List是一个接口,所以你不能调用new List();,而是必须选择一个实现。 ArrayList 是一个很好的全能型组合,顾名思义,它由一个数组支持。

    例如:

    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    ...
    // continue indefinitely
    
    System.out.println(list.get(0));  // prints the first thing in the list
    

    会正常工作。

    请注意,您必须(技术上不要求,但非常良好做法)在List 中指定元素的类型(即List&lt;String&gt;List&lt;Integer&gt;)。

    【讨论】:

    • 实际上我想要一些用户可以输入任意数量的输入并以 PRINT 或 COUNT 结尾的东西,以便得到结果..正如你可以看到我上面的代码有 numpoints 但我想要以不同的方式定义,这样我就不会超出边界异常
    • 查看正则表达式。这些可用于确定给定的输入字符串是否为数字。然后,如果你看到一个非数字,你可以单独处理它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2014-06-04
    相关资源
    最近更新 更多