问题:输入包含块数n(1≤n≤20)和由空格分隔的块w1,...,wn(整数,1≤wi≤100000)的权重。输入应该来自用户。
请找到我的代码:
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();
}
}
}
我不认为这是正确的方式因为输入应该用空格分隔..
我在考虑如何继续进行,但无法提出任何解决方案。你可以帮我解决这个问题。谢谢。
答案 0 :(得分:5)
输入可以在命令行中给出&#34; input1 input2 input3&#34; (以空格分隔的权重)
您可以使用扫描仪读取输入。请考虑以下示例代码:
假设输入只是整数。
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]);
}
}
}