Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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_String - Fatal编程技术网

Java 字符串数组越界

Java 字符串数组越界,java,arrays,string,Java,Arrays,String,我正在尝试创建一个字符串类型的数组,其大小和字符串由用户输入,并且我不断得到错误ArrayIndexOutofBounds。我发现有类似的线程与此相关,但没有一个线程解决了此错误。在我的for语句中,如果我去掉了等于和小于,我将不会收到任何错误,但我只能输入一个比我输入的数字少的名称。如果我让代码保持原样,那么除了错误之外,一切看起来都正常工作。我知道我犯了这个错误,因为我的数组超出了边界,但我不知道为什么。请帮忙!谢谢大家! package sales; import compare.*;

我正在尝试创建一个字符串类型的数组,其大小和字符串由用户输入,并且我不断得到错误ArrayIndexOutofBounds。我发现有类似的线程与此相关,但没有一个线程解决了此错误。在我的for语句中,如果我去掉了等于和小于,我将不会收到任何错误,但我只能输入一个比我输入的数字少的名称。如果我让代码保持原样,那么除了错误之外,一切看起来都正常工作。我知道我犯了这个错误,因为我的数组超出了边界,但我不知道为什么。请帮忙!谢谢大家!

package sales;
import compare.*;  
import java.util.*;

public class Sales {
   public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);
        System.out.println("Enter number of employees to compare:");
        int numEmp = scan.nextInt();

        while(numEmp < 2){
            System.out.println("Has to be at least 2 employees:");
            numEmp = scan.nextInt();
        }

        String[] names = new String[numEmp];

        System.out.println("Enter employees name:");
        for(int i=0;i<=names.length;i++){
            names[i]=scan.nextLine();    
        }
    }
}
包装销售;
进口比较;
导入java.util.*;
公务舱销售{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入要比较的员工数量:”);
int numep=scan.nextInt();
而(numep<2){
System.out.println(“必须至少有2名员工:”;
numep=scan.nextInt();
}
字符串[]名称=新字符串[numEmp];
System.out.println(“输入员工姓名:”);

对于(int i=0;i将for的条件更改为
ii如果我这样做,我的程序将无法正常运行。如果我输入的雇员人数=2,那么当我输入姓名时,我只能输入一个姓名。@Zachary现在看到我的答案了太棒了,谢谢!这个特定的场景正是由副本中接受的答案所解释的。我没有看到它在这里,解决我的问题的方法是在for语句之前添加scan.nextLine();这不在您标记为重复的主题中。如果这样做有效,那是偶然的。访问
names[names.length]
无效-这是您代码中的真正问题。即使我将names.length更改为numep,我也会收到相同的错误
scan.nextLine(); //add this
for(int i=0;i<names.length;i++){
    names[i]=scan.nextLine();
}