在 java 中读取由空格分隔的输入
reading input delimited by spaces in java
我正在为以下问题苦苦挣扎。
问题:输入包含块数 n (1 ≤ n ≤ 20) 和块的权重 w1, …, wn(整数,1 ≤ wi ≤ 100000),由空格分隔。输入应该从用户那里获取。
- 输入空格应该怎么写? (假设我输入的块数是 n = 5,块的权重是:2 3 55 6 33 - 因为 n = 5)
- 我应该如何读取带有空格的输入并将其存储在某个列表或数组中?使用什么命令。
请找到我的代码:
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]);
}
只需确保您确定输入的是数字。
可以在命令行输入 "input1 input2 input3"(权重用空格分隔)
您可以使用 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]);
}
}
}
我正在为以下问题苦苦挣扎。
问题:输入包含块数 n (1 ≤ n ≤ 20) 和块的权重 w1, …, wn(整数,1 ≤ wi ≤ 100000),由空格分隔。输入应该从用户那里获取。
- 输入空格应该怎么写? (假设我输入的块数是 n = 5,块的权重是:2 3 55 6 33 - 因为 n = 5)
- 我应该如何读取带有空格的输入并将其存储在某个列表或数组中?使用什么命令。
请找到我的代码:
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]);
}
只需确保您确定输入的是数字。
可以在命令行输入 "input1 input2 input3"(权重用空格分隔)
您可以使用 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]);
}
}
}