在 java 中读取由空格分隔的输入

reading input delimited by spaces in java

我正在为以下问题苦苦挣扎。

问题:输入包含块数 n (1 ≤ n ≤ 20) 和块的权重 w1, …, wn(整数,1 ≤ wi ≤ 100000),由空格分隔。输入应该从用户那里获取。

  1. 输入空格应该怎么写? (假设我输入的块数是 n = 5,块的权重是:2 3 55 6 33 - 因为 n = 5)
  2. 我应该如何读取带有空格的输入并将其存储在某个列表或数组中?使用什么命令。

请找到我的代码:

public static void main(String[] args) {
    int b1 = 0;
    Scanner in = new Scanner(System.in);
    System.out.println("Enter no. of blocks: ");
    b1 = in.nextInt();
    if (b1<=20) {
        in.nextLine();
        int[] arr = new int[b1];
        for (int i=0; i<b1; i++) {
            System.out.println("Enter a weights of ths blocks: ");
            if (arr[i]<=100000) {
          arr[i] = in.nextInt();




            }
    }
        }

我不认为这是正确的方式,因为输入应该用空格分隔..

我正在考虑如何进行,但无法想出任何解决方案。你能帮我解决这个问题吗?谢谢。

有一种非常简单的方法可以读取由空格分隔的输入:使用 string.split(delimit):

String input = "this is a test";
String[] tokens = input.split(" ");

这将为您提供一个数组 tokens,其中包含 "this"、"is"、"a" 和 "test"。

然后你可以像这样转换成一个int数组:

int[] inputNumbers = new int[tokens.length];
for(int i = 0; i < tokens.length; i++) {
    inputNumbers[i] = Integer.parseInt(tokens[i]);
}

只需确保您确定输入的是数字。

  1. 可以在命令行输入 "input1 input2 input3"(权重用空格分隔)

  2. 您可以使用 Scanner 读取输入。考虑下面的示例代码:

假设输入只是整数。

 Scanner scanner = new Scanner(System.in);
 int numOfBlocks = scanner.nextInt();
 int weightArray[] = new weightArray[numOfBlocks];
 for(int i=0;i<numOfBlocks;i++)
       {
        weightArray[i] = scanner.nextInt();
       }
 scanner.close();
//your logic

这是我的解决方案: 用户首先输入块的权重数,然后按回车键。后来他 在一行中以空格 (4 2 3 1) 分隔输入块的所有重量,然后按回车键。 检查单个值是否在正确的范围内,你必须自己做。

public static void main(String[] args) {
    int b1 = 0;
    Scanner in = new Scanner(System.in);
    System.out.println("Enter no. of blocks: ");
    b1 = Integer.parseInt(in.nextLine());
    int[] arr = new int[b1];
    if ((b1 <= 20) && (1 >= 0)) {
        System.out.println("Enter all weights of the block seperated by spaces and then press enter:");
        String readLine = in.nextLine();
        String[] weights = readLine.split(" ");
        for (int i = 0; i < b1; ++i) {
            arr[i] = Integer.parseInt(weights[i]);
        }
    }
    in.close(); //don't forget to close the resource!
}
import java.util.*;
class Test
{
    public static void main(String[] args) 
    {
        Scanner in=new Scanner(System.in);
        String s[]= in.nextLine().split(" ");

        int[] a=new int[s.length];
        for(int i =0 ;i < s.length;i++){
            a[i]= Integer.parseInt(s[i]);
        }
        for(int i=0;i<s.length;i++)
        {
            System.out.println(a[i]);
        }
    }
}