Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的代码给出了java.lang.StringIndexOutOfBoundsException,命令以非零状态退出_Java_Arrays_String_For Loop_Char - Fatal编程技术网

我的代码给出了java.lang.StringIndexOutOfBoundsException,命令以非零状态退出

我的代码给出了java.lang.StringIndexOutOfBoundsException,命令以非零状态退出,java,arrays,string,for-loop,char,Java,Arrays,String,For Loop,Char,我是一个初学者,自学成才,试图通过作业来完成工作。我正在尝试创建一个程序,该程序将根据输入的第一行(整数)读取N行代码。其他输入行由三个字母组成,分别为b、s或f。B和S是唯一被读取的重要字母,因为B给翻滚的球员加了一分,超过3个S,球员失去回合,F的意思是什么。根据阅读的字母,每个人每回合都会获得分数。我当前的障碍是char d1=行[i].charAt(0)区域,它给我一个退出的命令,线程“main”java.lang.StringIndexOutOfBoundsException:字符串索

我是一个初学者,自学成才,试图通过作业来完成工作。我正在尝试创建一个程序,该程序将根据输入的第一行(整数)读取N行代码。其他输入行由三个字母组成,分别为b、s或f。B和S是唯一被读取的重要字母,因为B给翻滚的球员加了一分,超过3个S,球员失去回合,F的意思是什么。根据阅读的字母,每个人每回合都会获得分数。我当前的障碍是char d1=行[i].charAt(0)区域,它给我一个退出的命令,线程“main”java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:2。
int num=input.nextInt(); 字符串[]行=新字符串[num]

for (int i=0; i<num; i++){
ine[i] = input.next(); 


// Creating characters for the dice 
char d1 = line[i].charAt(0);
char d2 = line[i].charAt(2);
char d3 = line[i].charAt(4);

while (aliceScore<3){

//D1 die score - alice
if (d1 == 'b')
aliceScore++;
else if (d1 == 's') 
aliceShotgun++;
else 

//D2 die score - Alice
if (d2 == 'b')
aliceScore++;
else if (d2 == 's')
aliceShotgun++;
else 

//D3 die score - Alice
if (d3 == 'b')
aliceScore++;
else if (d2 == 's')
aliceShotgun++;
else 


if  (aliceShotgun == 3)
aliceScore = 0;
break;  
输出 爱丽丝:3,鲍勃:2

更改
输入
输入.nextLine()

简而言之,
input.next()
只会给你一个单词,而
input.nextLine()
会扫描整行。您还可以尝试自己调试它,并查看每个代码块/代码行中发生了什么

注意:确保输入正确,每行至少包含5个字符(
行[i].charAt(4)
)。否则,您将再次获得
java.lang.StringIndexOutOfBoundsException
。看看发生这种情况的原因:

input.next()
只读取空格以内的字母,所以不要读取
input.next()
您可以将其更改为input.nextLine()

ex:

for (int i=0; i<num; i++){    
   ine[i] = input.nextLine();    
   String [] a=ine[i].split(" ");    
   char d1 = a[0].charAt(0);    
   char d2 = a[1].charAt(0);    
   char d3 = a[2].charAt(0);
}

for(int i=0;i
ine[i]=input.next();
-如果它说
字符串索引超出范围:2,可能会更改为
line[i]=input.nextLine():
你确定它不是
行[i]。字符(2)
?你能显示控制台输入和错误吗?注意“重复”谈到数组索引超出范围。但当在字符串中建立索引时,该内容也非常适用。
for (int i=0; i<num; i++){    
   ine[i] = input.nextLine();    
   String [] a=ine[i].split(" ");    
   char d1 = a[0].charAt(0);    
   char d2 = a[1].charAt(0);    
   char d3 = a[2].charAt(0);
}