当用户将某些参数输入到程序通过扫描程序接收的字符串时,我正在尝试创建具有不同行为的程序。我的问题是,我想让它好像用户没有写第二个参数,例如,程序应该仍然可以工作。
static String ReadString() {
Scanner scan = new Scanner(System.in);
return scan.nextLine();
}
String command = ReadString();
String words[]=new String[4];
words[0]="empty";
words[1]="empty";
words[2]="empty";
words[3]="empty";
words = command.split(" ");
问题是,如果我在用户只为该字符串写入一个参数后调用了单词[1],我仍然会得到错误ArrayOutOfBounds,尽管应该有一个值为&#34的字符串;为空#34;
实施例: 用户写道:ababbbbb command1>>>当我打电话给单词[1]时,它应该给我command1
用户写道:ababbbbb>>>当我打电话给单词[1]时,它应该给我空的
答案 0 :(得分:1)
因为,当你在下面编写代码时,意味着words
,这是String of String类型指向引用,它被分配内存以容纳4个字符串。
String words[]=new String[4];
现在,通过" "
拆分创建数组的代码行下方只有大小1.现在,words
变量引用已更改,只能保存1 String
words = command.split(" ");
您需要进行以下更正:
String command = ReadString();
String words[]=new String[4];
String[] n = command.split(" ");
for(int i=0; i< 4; i++)
{
if((n.length-1)==i)
{
words[i]=n[i];
}
else
{
words[i]="empty";
}
}
<强>&GT;&GT;&GT; Demo&LT;&LT;&LT; 强>