6

私は Java を少し上達させることに取り組んでいます。私が遭遇した問題は、次のようにすべて 1 行でユーザー入力を取得することです。

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 #

一度に 1 つの入力を読み取る方法をいくつかの場所で見てきましたが、動的な ArrayList を一度に読み取る最良の方法はわかりませんでした。

論理的にはその方法を知っていると思いますが、まだ試していないので、コンマを使用する場合と使用しない場合の違いについてはあまり気にしていません。実際の主な問題は上記のとおりです (ユーザー入力を ArrayList に読み込むユーザーが一度にすべての数値を入力した場合の動的サイズ)。ありがとう、そして私は必ずしもコードを探しているわけではありません。これは宿題ではありません。これを行う最善の方法を考えているだけです。それがどのように行われたかを論理的に述べるだけでも機能しますが、コードは高く評価されます。

4

4 に答える 4

6

この簡単な例を試して、配列リストの値を出力してください

     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);

            }

        }
于 2013-09-15T01:40:23.427 に答える
3

からデータを読み取る方法については十分な答えがあると思いますSystem.in、ここでは別のアプローチを取ります。まず、これが Java でデータを取得する主要な方法ではないことに注意してください。実際、10年以上使っていません。そのため、構造化されたデータを何らかのコンテナー (ArrayList など) に入れるための、すぐに使用できる完全なソリューションがありません。代わりに、1 行に 1 つの文字列が得られます。そして、あなたはそれを自分で処理しなければなりません。このプロセスは解析と呼ばれます。選択した構文の複雑さに応じて、より複雑な場合はパーサー ジェネレーターを使用する、単純な場合はパーサーを手動で作成するなど、いくつかのアプローチがあります。あなたの最初の提案に入り、オプションの空白で区切られたコンマとして説明したいと思います. このような構文では、クラス 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);
      }
    }
  }
于 2013-09-15T11:29:40.453 に答える
2

このコードを試して、arraylist で入力を動的に取得し、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);
 }
}
于 2016-12-06T07:27:01.060 に答える
1

1 つのアプローチは、入力をトークン化してから、次のように配列に追加することです。


    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);
于 2013-09-15T01:41:20.383 に答える