未知java netbeans错误

未知java netbeans错误,java,netbeans,Java,Netbeans,为什么这个计划行不通?当我在第一个问题中键入“1”,然后在第二个问题中键入某个内容时,会出现一条红色文本:程序没有完成,但应该可以运行,不是吗 线程主java.lang.StringIndexOutOfBoundsException中的异常: 字符串索引超出范围:0处 java.lang.String.charAtString.java:658 at javaapplication2.javaapplication2.mainJavaApplication2.java:37 java 结果:1

为什么这个计划行不通?当我在第一个问题中键入“1”,然后在第二个问题中键入某个内容时,会出现一条红色文本:程序没有完成,但应该可以运行,不是吗

线程主java.lang.StringIndexOutOfBoundsException中的异常: 字符串索引超出范围:0处 java.lang.String.charAtString.java:658 at javaapplication2.javaapplication2.mainJavaApplication2.java:37 java 结果:1

代码:

package javaapplication2;
import java.util.Scanner;
/**
 *
 * @author John
 */
public class JavaApplication2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int charAt = 0;
        int[] karies = new int[99];
        char[] ko = new char[99];
        char[] firstchar = new char[99];

        System.out.println("Type \"1\" for encryption and \"2\" for decryption:");


        if (sc.nextInt() == 1) {
            System.out.println("Enter the text you want to encrypt:");
        } else {
            System.out.println("Enter the text you want to decrypt:");
        }
        String krypt = sc.nextLine();
        int longd = (sc.nextLine()).length();

        while (charAt < longd) {
            firstchar[charAt] = krypt.charAt(charAt);
            karies[charAt] = ((int)firstchar[charAt]);
            ko[charAt] = (char)(karies[charAt] - 7);
            charAt++;
        }
        System.out.println(krypt.charAt(0));
    }
}

在这里,问题不在于Netbeans。sc.nextLine是罪魁祸首。按enter键输入选项后,回车由sc.nextLine使用,因为sc.nextInt将只读数字,而不是结尾的\n。要解决这个问题,您可以使用额外的sc.nextLine


有关更多详细信息,请参阅或提问

很简单。当您使用sc.nextInt从用户处扫描的选项输入为1或2时,现在按enter键转到新行,以输入您试图存储在krypt中的字符串。在这里,sc.nextInt只接受数字部分,不接受回车部分-\n希望现在有点清楚。
if (sc.nextInt() == 1){
System.out.println("Enter the text you want to encrypt:");
}else{
System.out.println("Enter the text you want to decrypt:");
}
sc.nextLine(); // Extra added
String krypt = sc.nextLine();
int longd = (sc.nextLine()).length();