Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 如何清除/清空循环中的数组_Java_Arrays_While Loop - Fatal编程技术网

Java 如何清除/清空循环中的数组

Java 如何清除/清空循环中的数组,java,arrays,while-loop,Java,Arrays,While Loop,我循环了一个数组,所以首先它从输入的数据中获取全名,并将其拆分为lname和fname,然后在该循环中使用一个循环对输入的分数求和 当您结束第二个循环时,第一个循环再次请求String.split(在我的例子中是fullname),但它不允许我输入要拆分的新数据,而是给出错误“java.lang.ArrayIndexOutOfBoundsException:1”并突出显示“String fname=parts[1] 任何能帮助我走上正轨的想法和建议都将不胜感激 我也试过了 string = ""

我循环了一个数组,所以首先它从输入的数据中获取全名,并将其拆分为lname和fname,然后在该循环中使用一个循环对输入的分数求和

当您结束第二个循环时,第一个循环再次请求String.split(在我的例子中是fullname),但它不允许我输入要拆分的新数据,而是给出错误“java.lang.ArrayIndexOutOfBoundsException:1”并突出显示“String fname=parts[1]

任何能帮助我走上正轨的想法和建议都将不胜感激

我也试过了

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