簡體   English   中英

如何在 Java 中將單行整數作為輸入?

[英]How can I take a single line of integers as input in Java?

我正在嘗試將以下行作為 Java 中的輸入,但沒有得到所需的 output。 我想要一個數組列表中的所有這些整數。

輸入:

  • 2(測試用例)
  • 5(第一個測試用例數組的大小)
  • 1 2 3 5 4(第一個測試用例數組中的元素)
  • 4(第二個測試用例數組的大小)
  • 66 45 778 51(第二個測試用例數組中的元素)

代碼:

import java.util.*;
import java.lang.*;
public class Main
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //System.out.println("Hello World");
        int tc = sc.nextInt();
        for(int i = 0; i < tc; i++){
            ArrayList<Integer> list = new ArrayList<Integer>();
            int t = sc.nextInt();
            String line = sc.next();
            String[] arr = line.split(" ");
            for(int j = 0; j < t; j++)   
                list.add(Integer.parseInt(arr[j]));
            System.out.print(list);
        }
    }
}

Output

1
5
1 2 3 4 5
[1]

使用sc.nextLine() 它返回一個String ,但是通過在每個空格之后拆分輸入,您將獲得一個包含所有整數的String[] 如果您遍歷它們並將它們轉換為int ,則可以將它們添加到您的列表中。
這是我將如何做的一個例子:

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

class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("How many numbers?");
    int tc = Integer.valueOf(sc.nextLine());

    for(int i = 0; i < tc; i++) {
        System.out.println("Next number");
        ArrayList<Integer> list = new ArrayList<Integer>();
        String line = sc.nextLine();

        String[] arr = line.split("\\s");
        for(int j = 0; j < arr.length; j++){
            list.add(Integer.parseInt(arr[j]));
        }
        System.out.print(list);
    }

    sc.close();
  }

}

我不太確定您的問題是什么,但我認為您只是對讀取一串數字(1 2 3 4 5 4)並將其轉換為數組 [1,2,3,4,5,4] 感興趣。

String input= "1 2 3 4 5 4";
String[] stringList = input.split(" ");
int[] integerList = new int[stringList .length()];
for(int i = 0; i < listOfS.length(); i++) {
    integerList[i] = Integer.parserInt(stringList[i]);
}

首先,您必須使用 input.split(" ") 將 String 字符串拆分為其元素。 這將在每個空格符號處拆分字符串輸入。 然后你必須將 String[] 轉換為 int[]。 這是通過遍歷 string[] 並使用 Integer.parseInt() 將其內容解析為 integer 來完成的。

這是否符合您的要求。


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

    public class Main {
       public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int tc = sc.nextInt();
          for (int i = 0; i < tc; i++) {
             List<Integer> list = new ArrayList<>();
             int nElements = sc.nextInt();
             while (nElements-- > 0) {
                list.add(sc.nextInt());
             }
             System.out.print(list);
          }
       }
    }

這是使用Stream進行數字處理的簡單解決方案:

List<Integer> list = new ArrayList<>();

Scanner scanner = new Scanner(System.in);
int testCases = Integer.parseInt(scanner.nextLine());

for (int i = 0; i < testCases; i++) {
    scanner.nextLine(); // skip "size" line as we don't use it in this solution
    Arrays.stream(scanner.nextLine().trim().split("\\s+"))
            .map(Integer::parseInt)
            .forEach(list::add);
}

list.forEach(e -> System.out.printf("%d ", e));

輸入

2
4
  2 3   4 5   
2
 99    77

Output

2 3 4 5 99 77 

解釋

  • Arrays.stream(...) - 從提供的數組的元素創建一個stream
  • scanner.nextLine().trim().split("\\s+") - 從Scanner讀取一行,在開頭和結尾trim空白,用一個或多個空白splitString[]
  • .map(Integer::parseInt) - 將每個String元素轉換為Integer
  • .forEach(list::add) - 將每個Integer元素添加到list

暫無
暫無

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

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