如何将以空格分隔的整数读入数组



我对我的项目有麻烦,因为我不能得到正确的开始,这是读取由用户的空格分隔的一行整数,并将值放入数组中。

    System.out.println("Enter the elements separated by spaces: ");
    String input = sc.next();
    StringTokenizer strToken = new StringTokenizer(input);
    int count = strToken.countTokens();
    //Reads in the numbers to the array
    System.out.println("Count: " + count);
    int[] arr = new int[count];
    for(int x = 0;x < count;x++){
        arr[x] = Integer.parseInt((String)strToken.nextElement());
    }

这就是我所拥有的,它似乎只读取数组中的第一个元素,因为当count初始化时,由于某种原因,它被设置为1。

有人能帮我吗?换一种方式做会不会更好?

只需要做一个微小的更改就可以使您的代码工作。错误在这一行:

String input = sc.next();

正如我在问题下的评论中指出的那样,它只读取输入的下一个令牌。参考文档

如果用

代替
String input = sc.nextLine();

它会做你想让它做的事情,因为nextLine()消耗了整行输入。

String integers = "54 65 74";
List<Integer> list = new ArrayList<Integer>();
for (String s : integers.split("\s"))  
{  
   list.add(Integer.parseInt(s));  
}
list.toArray();

这是一种更简单的方法-

System.out.println("Enter the elements seperated by spaces: ");
String input = sc.nextLine();
String[] split = input.split("\s+");
int[] desiredOP = new int[split.length];
int i=0;
for (String string : split) {
    desiredOP[i++] = Integer.parseInt(string);
}

有其他方法可以达到相同的效果。但是当我尝试你的代码时,它似乎工作正常。

StringTokenizer strToken = new StringTokenizer("a b c");
int count = strToken.countTokens();
System.out.println(count);

将计数打印为3。默认为" "

我不知道你怎么得到你的输入字段。可能是它没有以字符串格式返回完整的输入。

我认为你正在使用java.util.Scanner来读取你的输入

java doc from scanner.

Scanner使用分隔符模式将其输入分解为多个令牌,默认情况下匹配空格。生成的令牌可能是使用各种next转换成不同类型的值方法。

因此输入只返回一个整数,其余的都不处理

读这个。扫描器#next(),你应该用扫描器#nextLine()来代替

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
.
.
.
StringTokenizer st = new StringTokenizer(br.readLine());
int K = Integer.parseInt(st.nextToken());
int N= Integer.parseInt(st.nextToken());

相关内容

  • 没有找到相关文章

最新更新