通过输入创建包含未知元素的数组

时间:2015-12-28 16:21:12

标签: java arrays do-while

我知道这不是你应该做的事情但是我仍然试图找到一种方法来运行这个循环,让arr[i]里面的 int counter=1, note=0; System.out.println("Please enter characters, -1 to stop: "); do { char[] arr= new char[counter]; for (int i=0;i<=counter;i++){ arr[i] = s.next().charAt(0); if (arr[i]==-1){ note = -1; break; } ++counter; } } while (note>=0); 知道“数组中的元素数量(我在循环之外声明,因为我不希望它每次都创建一个新元素。)

n

2 个答案:

答案 0 :(得分:0)

从您更清楚的评论中,这是一个示例主要方法。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in); // Input
    int amt = 0; // Amount of chars received
    List<Character> chars = new ArrayList<>(); // ArrayList is easier for now
    while (input.hasNext()) { // Grabs Strings separated by whitespaces
        String token = input.next(); // Grab token
        if (token.equals("-1")) {
            break; // End if -1 is received
        } else if (token.length() != 1) {
            throw new IllegalArgumentException("Token not one char: " + token);
            // It seems you want only chars - this handles wrong input
        } else {
            chars.add(token.charAt(0)); // Adds the character to the list
            amt++; // Increment amt
        }
    }
    char[] array = new char[amt]; // Converting to an array
    for (int i = 0; i < amt; i++) {
        array[i] = chars.get(i); // Copies chars into array
    }
    System.out.println(Arrays.toString(array)); // Handle data here
}

我希望这是正确的。输入a b c d -1会导致输出[a, b, c, d]

答案 1 :(得分:0)

如果您使用输入字符串大小检查,我认为您将得到解决。

int counter=0, note=0;

System.out.println("Please enter characters, -1 to stop: ");
String input=s.nextLine();
counter=input.length();


char[] arr= new char[counter];
for (int i=0;i<counter;i++){
    arr[i] = input.charAt(i);        
} 

并且如果您使用的是ArrayList而不是Array,则无需担心大小。

ArrayList是有效的灵活数据 导致使用添加功能。