将多个用户输入存储到整数数组中

时间:2013-10-22 02:39:21

标签: java arrays input

所以这就是我想要做的。有用户输入数字,将它们存储在一个数组中,然后在一行上打印所有这些数字。我也必须使用方法/功能。我认为到目前为止我做得很好,它在日食中没有显示任何错误。我坚持的是将他们的输入存储到数组中。我希望他们一次输入一个数字,直到他们满意并键入'退出'。我还没有读过如何将数据存储在数组中,尽管环顾四周,尤其是逐步存储多个内容。到目前为止,这是我的代码,并提前感谢您的帮助!

import java.util.Scanner;

public class intarray {

public static void main(String[] args) {
    System.out.println("Enter a number then hit enter. You may then enter another number or end by typing quit.");
    String x;
    Scanner input = new Scanner(System.in);
    while (true)  {
       x=input.next();
       if (x.equalsIgnoreCase("quit")) {break;}
       if (x.equals(null)) throw new Error("You entered nothing. Try again.");
       int stringLength = x.trim().length();
       if (stringLength == 0) throw new Error("Seems you only entered spaces. Try again.");
        isNum(x);
        int goingintoarray = Integer.parseInt(x);



        int array[];

    }
  }

public static String isNum(String t) {


    int user=Integer.parseInt(t);
    String convertback = Integer.toString(user);
    return convertback;
}

}

3 个答案:

答案 0 :(得分:1)

由于你不知道有多少个元素会有一个数组是一个坏主意,因为你必须经常调整它的大小,因为新元素出现(复制数组很昂贵!)或者在开始时实例化一个足够大的数组(这是一种浪费,仍然不能保护你100%不必最终调整它)。

相反,使用Java的List(最好是LinkedList)听起来是个好主意,因为你可以动态添加元素而不需要调整数据结构的大小。

List<Integer> numbers = new LinkedList<>();
while(true) {
  // something
  numbers.add(goingintoarray);
  // something
}

小心其他实现 - 例如ArrayList使用数组(d'uh ;-))来存储元素,这样你就会遇到同样的问题,但实现时会为你调整大小调整部分。 / p>

@Edit:通过约定,Java中的类是使用CamelCase编写的,以大写字母开头。

答案 1 :(得分:0)

ArrayList<Integer> inputs = new ArrayList<Integer>();    
while (true)  {
      Scanner input = new Scanner(System.in);
      x=input.next();
      if (x.equalsIgnoreCase("quit")) {break;}
      if (x.equals(null)) throw new Error("You entered nothing. Try again.");
      int stringLength = x.trim().length();
      if (stringLength == 0) throw new Error("Seems you only entered spaces. Try again.");

      inputs.add(Integer.parseInt(x));

    }

你不需要isNum方法,因为如果x的输入输入错误,它会在这里给出相同的异常。

答案 2 :(得分:0)

import java.util.Scanner;

公共课intarray {

public static int initSize = 5;

public static void main(String[] args) {
    System.out.println("Enter a number then hit enter. You may then enter another number or end by typing quit.");

    int array[] = new int[initSize];
    int pos = 0;
    int maxSize = initSize; 

    String x = null;
    Scanner input = new Scanner(System.in);

    while (true) {
        x = input.next();

        if (x.equalsIgnoreCase("quit")) {
            break;
        }

        //input empty string, java io can filter. So , x impossible "null" or null.
        //if (x.equals(null))
        //  throw new Error("You entered nothing. Try again.");

        int stringLength = x.trim().length();

        if (stringLength == 0)
            throw new Error("Seems you only entered spaces. Try again.");

        Integer numX = isNum(x);

        // if the array is full, extend it
        if(pos == maxSize){
            int[] newArray = new int[2 * maxSize];
            System.arraycopy(array, 0, newArray, 0, maxSize);
            array = newArray;
            maxSize = array.length;
        }

        if(null == numX) 
            System.out.println(x + " isn't a number."); //choose notify or throw error  
        else
            array[pos++] = numX;

    }

    printArray(array, pos);

}

public static Integer isNum(String t) {
    try {
        return Integer.parseInt(t);
    } catch (NumberFormatException e) {
        return null;
    }
}

public static void printArray(int[] array, int pos) {
    if(null == array || array.length == 0 || pos <= 0)
        return ;
    for(int i = 0 ; i < pos; i++)
        System.out.print(array[i] + " ");
}

}