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

时间:2015-01-10 19:21:17

标签: java inputstream java.util.scanner

我正在努力解决以下问题。

问题:输入包含块数n(1≤n≤20)和由空格分隔的块w1,...,wn(整数,1≤wi≤100000)的权重。输入应该来自用户。

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

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

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

    我在考虑如何继续进行,但无法提出任何解决方案。你可以帮我解决这个问题。谢谢。

4 个答案:

答案 0 :(得分:5)

  1. 输入可以在命令行中给出&#34; input1 input2 input3&#34; (以空格分隔的权重)

  2. 您可以使用扫描仪读取输入。请考虑以下示例代码:

  3. 假设输入只是整数。

     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
    

答案 1 :(得分:3)

这是一种非常简单的方法来读取空格描述的输入:使用string.split(delimit)

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

那将给你一个数组,tokens,&#34;这个&#34;,&#34;是&#34;,&#34; a&#34;和&# 34;测试&#34;

然后你可以转换成这样的int数组:

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

确保您确定将数字作为输入。

答案 2 :(得分:1)

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

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!
}

答案 3 :(得分:0)

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