web-dev-qa-db-ja.com

Java 1行から複数​​のintを読み取る

私はプログラムに取り組んでおり、プロンプトが表示されたときにユーザーが複数の整数を入力できるようにしたいと考えています。スキャナーを使用しようとしましたが、ユーザーが入力した最初の整数のみを保存することがわかりました。例えば:

複数の整数を入力:1 3 5

スキャナーは最初の整数1のみを取得します。1つの行から3つの異なる整数すべてを取得し、後で使用することは可能ですか?これらの整数は、ユーザーの入力に基づいて操作する必要があるリンクリスト内のデータの位置です。ソースコードを投稿することはできませんが、これが可能かどうかを知りたかったのです。

20
Steven

ハッカーアースでいつも使っています

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String  lines = br.readLine();    

    String[] strs = lines.trim().split("\\s+");

    for (int i = 0; i < strs.length; i++) {
    a[i] = Integer.parseInt(strs[i]);
    }
19
Prasanth Louis

数値を文字列として受け取り、String.split(" ")を使用して3つの数値を取得します。

_String input = scanner.nextLine();    // get the entire line after the Prompt 
String[] numbers = input.split(" "); // split by spaces
_

配列の各インデックスは、Integer.parseInt()によってintsにできる数値の文字列表現を保持します

8
BitNinja

これを試して

public static void main(String[] args) {
    Scanner in = new Scanner(System.in); 
    while (in.hasNext()) {
        if (in.hasNextInt())
            System.out.println(in.nextInt());
        else 
            in.next();
    }
}

デフォルトでは、スキャナーは、区切り文字として少なくとも1つの空白に一致する区切り文字パターン「\ p {javaWhitespace} +」を使用します。特別なことをする必要はありません。

空白(1つ以上)またはコンマのいずれかに一致させる場合は、スキャナーの呼び出しをこれに置き換えます

Scanner in = new Scanner(System.in).useDelimiter("[,\\s+]");
8
E.A.

スキャナーにはhasNext()というメソッドがあります:

    Scanner scanner = new Scanner(System.in);

    while(scanner.hasNext())
    {
        System.out.println(scanner.nextInt());
    }
8
sendon1982

取得する整数の量がわかっている場合は、nextInt()メソッドを使用できます

例えば

Scanner sc = new Scanner(System.in);
int[] integers = new int[3];
for(int i = 0; i < 3; i++)
{
    integers[i] = sc.nextInt();
}
5
Sk1X1

スキャナーを使用して、ユーザーが入力し、すべての値を配列に入れたい整数を処理する方法を次に示します。ただし、これは、ユーザーが入力する整数の数がわからない場合にのみ使用してください。わかっている場合は、整数を取得する回数だけScanner.nextInt()を使用する必要があります。

import Java.util.Scanner; // imports class so we can use Scanner object

public class Test
{
    public static void main( String[] args )
    {
        Scanner keyboard = new Scanner( System.in );
        System.out.print("Enter numbers: ");

        // This inputs the numbers and stores as one whole string value
        // (e.g. if user entered 1 2 3, input = "1 2 3").
        String input = keyboard.nextLine();

        // This splits up the string every at every space and stores these
        // values in an array called numbersStr. (e.g. if the input variable is 
        // "1 2 3", numbersStr would be {"1", "2", "3"} )
        String[] numbersStr = input.split(" ");

        // This makes an int[] array the same length as our string array
        // called numbers. This is how we will store each number as an integer 
        // instead of a string when we have the values.
        int[] numbers = new int[ numbersStr.length ];

        // Starts a for loop which iterates through the whole array of the
        // numbers as strings.
        for ( int i = 0; i < numbersStr.length; i++ )
        {
            // Turns every value in the numbersStr array into an integer 
            // and puts it into the numbers array.
            numbers[i] = Integer.parseInt( numbersStr[i] );
            // OPTIONAL: Prints out each value in the numbers array.
            System.out.print( numbers[i] + ", " );
        }
        System.out.println();
    }
}
2
Mostafa

これはうまくいきます....

int a = nextInt();int b = nextInt();int c = nextInt();

または、ループで読むことができます

1
2rd_7

私はそれが古い議論であることを知っています:)私はそれが働いているコードの下でテストしました

`String day = "";
 day = sc.next();
 days[i] = Integer.parseInt(day);`
0
Mahsun Fahmi

整数を入力として使用する場合
あなたの場合のように、たった3つの入力に対して:

import Java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a,b,c;
a = scan.nextInt();
b = scan.nextInt();
c = scan.nextInt();

より多くの入力については、ループを使用できます。

import Java.util.Scanner;
Scanner scan = new Scanner(System.in);
int a[] = new int[n]; //where n is the number of inputs
for(int i=0;i<n;i++){
    a[i] = scan.nextInt();    
}
0

おそらくString.split(String regex)を探しているでしょう。正規表現には「」を使用します。これにより、個々にintに解析できる文字列の配列が得られます。

0
adv12

行全体を文字列として取得し、その後StringTokenizerを使用して番号を取得し(区切り文字としてスペースを使用)、それらを整数として解析します。これは、1行のn個の整数に対して機能します。

    Scanner sc = new Scanner(System.in);
    List<Integer> l = new LinkedList<>(); // use linkedlist to save order of insertion
    StringTokenizer st = new StringTokenizer(sc.nextLine(), " "); // whitespace is the delimiter to create tokens
    while(st.hasMoreTokens())  // iterate until no more tokens
    {
        l.add(Integer.parseInt(st.nextToken()));  // parse each token to integer and add to linkedlist

    }
0
rogue_leader

ハッカーの地球試験のために特別にこのコードを作成しました


  Scanner values = new Scanner(System.in);  //initialize scanner
  int[] arr = new int[6]; //initialize array 
  for (int i = 0; i < arr.length; i++) {
      arr[i] = (values.hasNext() == true ? values.nextInt():null);
      // it will read the next input value
  }

 /* user enter =  1 2 3 4 5
    arr[1]= 1
    arr[2]= 2
    and soo on 
 */ 

0
saurabh singh

BufferedReaderを使用-

StringTokenizer st = new StringTokenizer(buf.readLine());

while(st.hasMoreTokens())
{
  arr[i++] = Integer.parseInt(st.nextToken());
}
0
Varun Chaudhary

これを多くのコーディングサイトで使用する:

  • ケース1:各行の整数の数IS指定

スペースで区切られた4つの整数入力の各行で3つのテストケースが与えられたと仮定します_1 2 3 4_、_5 6 7 8_、_1 1 2 2_

_        int t=3,i;
        int a[]=new int[4];

        Scanner scanner = new Scanner(System.in);

        while(t>0)  
        {
            for(i=0; i<4; i++){
                a[i]=scanner.nextInt();
                System.out.println(a[i]);
            }   

        //USE THIS ARRAY A[] OF 4 Separated Integers Values for solving your problem
            t--;
        }
_
  • ケース2:各行の整数の数が与えられていない場合

    _    Scanner scanner = new Scanner(System.in);
    
        String lines=scanner.nextLine();
    
        String[] strs = lines.trim().split("\\s+");
    _

    最初にtrim()する必要があることに注意してください:trim().split("\\s+")-そうでなければ、例えば_a b c_を分割すると、最初に2つの空の文字列が出力されます

    _    int n=strs.length; //Calculating length gives number of integers
    
        int a[]=new int[n];
    
        for (int i=0; i<n; i++) 
        {
            a[i] = Integer.parseInt(strs[i]); //Converting String_Integer to Integer 
            System.out.println(a[i]);
        }
    _
0