簡體   English   中英

Java ArrayList,在一行中獲取多種類型(int,String等)的用戶輸入

[英]Java ArrayList, taking user input of multiple types(int, String etc.) in one line

我正在努力在Java上做得更好,我遇到的一個問題就是接受用戶輸入,所有這些都在一行中,如下所示:

System.out.println("Please input numbers that you would like to work with");

    //Read in user input into ArrayList, taking into account that they may input Strings or anything else.

假設用戶輸入這樣的東西

1,2,4,257,狗,兔,7,#

甚至

1 2 4 257狗兔7#

我已經在幾個地方看到過如何一次讀取一個輸入,但我不確定一次讀取動態ArrayList的最佳方法。

我真的不關心使用逗號或沒有逗號的區別,因為邏輯上我認為我知道該怎么做,還沒有嘗試過,所以真正的主要問題如上所述(將用戶輸入讀入ArrayList)當用戶一次輸入所有數字時的動態大小) 謝謝,我不一定要找代碼,這不是功課,只是想知道最好的方法。 只是在邏輯上陳述它的完成方式將起作用,但代碼表示贊賞。

嘗試這個簡單的例子來打印arraylist值

     import java.util.*;
        class SimpleArrayList{
            public static void main(String args[]){
                List l=new ArrayList();
                System.out.println("Enter the input");
                Scanner input=new Scanner(System.in);

                 String a =input.nextLine();
                 l.add(a);
       // use this to iterate the value inside the arraylist.
      /* for (int i = 0; i < l.size(); i++) {
          System.out.println(l.get(i));
              } */
                    System.out.println(l);

            }

        }

我認為對於如何從System.in讀取數據有足夠的答案,我將采取不同的方法。 首先,您應該知道這不是在java中獲取數據的主要方式。 事實上,在十多年的時間里,我從未使用它。 這就是為什么沒有完整的准備使用解決方案為我提供結構化數據到一些容器(如ArrayList)。 相反,每行只需一個字符串。 你必須自己處理這個問題。 這個過程稱為解析。 根據所選語法的復雜性,有幾種方法,比如使用解析器生成器,如果它更復雜,或者在更簡單的情況下手動編寫解析器。 我想進入你的第一個建議並將其描述為用可選空格分隔的逗號。 對於像這樣的語法,類Scanner提供了相當多的支持。 可以識別數字,並且幾乎自動完成標記化。 但是,如果您有更多特定數據,您可能需要一些額外的努力,就像我用動物地圖演示的那樣,我曾經轉換過非常特殊的數據類型。 為了足夠靈活地解決所有現實世界的問題,沒有一個現成的解決方案。 只有全面的支持才能建立自己的。

  Map<String, Animal> animals = ...
  Scanner scanner = new Scanner("1, 2, 4, 257, dog, rabbit, 7, #").useDelimiter(",");
  while (scanner.hasNext()) {
    if (scanner.hasNextInt()) {
      result.add(scanner.nextInt());
    } else {
      String val = scanner.next();
      if (animals.containsKey(val)) {
        result.add(animals.get(val));
      } else {
        result.add(val);
      }
    }
  }

一種方法是將輸入標記化,然后將其添加到數組中,如下所示:


    Scanner scn = new Scanner(System.in);
    System.out.println("Put in a set: ");
    String input = scn.nextLine();
    System.out.println(input);
    Scanner tokenizer = new Scanner(input);
    tokenizer.useDelimiter(" ");
    ArrayList<Object> arr = new ArrayList<Object>();
    while(tokenizer.hasNext())
    {
        arr.add(tokenizer.next());
        System.out.println(arr.get(arr.size()-1));
    }
    System.out.println(arr);

您可以嘗試使用此代碼在arraylist中輸入dinamically並存儲在arraylist中

import java.util.ArrayList;
import java.util.Scanner;

public class HelloWorld
{

 public static void main(String []args){
     Scanner sc=new Scanner(System.in);
     String j;
     ArrayList l=new ArrayList();
     for(int i=0;i<6;i++)
     {  j=sc.nextLine();
         l.add(j);
     }
    System.out.println("Hello World"+l);
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM