Java 如何清除/清空循环中的数组
我循环了一个数组,所以首先它从输入的数据中获取全名,并将其拆分为lname和fname,然后在该循环中使用一个循环对输入的分数求和 当您结束第二个循环时,第一个循环再次请求String.split(在我的例子中是fullname),但它不允许我输入要拆分的新数据,而是给出错误“java.lang.ArrayIndexOutOfBoundsException:1”并突出显示“String fname=parts[1] 任何能帮助我走上正轨的想法和建议都将不胜感激 我也试过了Java 如何清除/清空循环中的数组,java,arrays,while-loop,Java,Arrays,While Loop,我循环了一个数组,所以首先它从输入的数据中获取全名,并将其拆分为lname和fname,然后在该循环中使用一个循环对输入的分数求和 当您结束第二个循环时,第一个循环再次请求String.split(在我的例子中是fullname),但它不允许我输入要拆分的新数据,而是给出错误“java.lang.ArrayIndexOutOfBoundsException:1”并突出显示“String fname=parts[1] 任何能帮助我走上正轨的想法和建议都将不胜感激 我也试过了 string = ""
string = "";
string = null;
以下是我目前的代码:
import java.util.Scanner;
public class TestScores
{
public static void main(String[] args) {
Scanner kb = new Scanner (System.in);
String fullname;
int sum = 0;
int count = 0;
int score;
System.out.println("Please enter name here e.g lastname, firstname");
fullname = kb.nextLine( );
while (fullname.equals ("Done") !=true){
String[] parts = fullname.split(",");
String lname = parts[0];
String fname = parts[1];
System.out.println("Enter scores (Type -1 to finish scoring.");
score = kb.nextInt();
while(score != -1)
{
sum += score;
score = kb.nextInt();
count++;
}
System.out.println(fname + " " + lname + "'s total Score is: " + sum);
System.out.println();
System.out.println("Please enter another name here e.g lastname, firstname to start scoring");
fullname = kb.nextLine( );
}
}
}
首先测试分割结果是否存在,并尝试初始化fullname变量
String fullname=“”;
解决方案:
System.out.println("Please enter another name here e.g lastname, firstname to start scoring");
kb.nextLine(); //add this line to fix your problem.
fullname = kb.nextLine( );
说明:
System.out.println("Please enter another name here e.g lastname, firstname to start scoring");
kb.nextLine(); //add this line to fix your problem.
fullname = kb.nextLine( );
您正在执行Scanner.nextLine()
,但这不会读取最后一个换行符。行fullname=kb.nextLine();
使用此换行符,然后在fullname
中只得到一个换行符。然后拆分返回一个大小为1的数组,因此在这一行String fname=parts[1]中得到一个ArrayIndexOutOfBoundsException
。您只需添加一个nextLine()
在等待输入之前,先使用换行符
看看这个答案:产生错误的原因是部分
不够长,不能有部分[1]
之所以parts
如此短,是因为fullName.split(“,”)
返回了一个单元素数组
split()
返回单元素数组的原因是fullname
不包含逗号
fullname
不包含逗号的原因是文件中的一行不包含逗号
如何解决这一问题取决于您。您可以指定您的程序在无效输入时容易失败。您可以检测短数组并跳过该行。您可以检测短数组并插入空白/空的姓氏或名字。这一切取决于您收到(或发明)的要求删除了C++ C++ C++,因为它与C++代码无关。我只为……<代码>做C++。这是java而不是C++!String []部分在while循环中,当循环结束字符串[]零件被破坏了不是吗?@SamsinOzo它解决了问题吗?问题解决了-见kai的解决方案。我要感谢所有回复它的人,添加了kb.nextLine();工作得很有魅力!你可以接受任何表示问题解决的答案。完成了!再次感谢,也感谢添加了“跳过nextLine()”使用nextInt()后,我的理解更加清晰:3