未知的java netbeans错误



为什么程序不能工作?当我在第一个问题上输入"1",然后在第二个问题上输入一些东西时,出现了一个红色的文本:(程序没有完成,但应该可以工作,不是吗?)

线程"main"异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 atjava.lang.String.charAt (String.java: 658)Java javaapplication2.JavaApplication2.main (JavaApplication2.java: 37)结果: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()

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();

要了解更多细节,您可以参考这个或这个问题。

相关内容

  • 没有找到相关文章

最新更新