未知的java netbeans错误

时间:2015-08-29 20:31:03

标签: java netbeans

为什么该计划无效?当我输入' 1'在第一个问题,然后在第二个问题输入内容时,会出现一个红色文字:(程序没有完成,但它应该可以工作吗?)

  

线程中的异常" main" java.lang.StringIndexOutOfBoundsException:   字符串索引超出范围:0 at   java.lang.String.charAt(String.java:658)at   javaapplication2.JavaApplication2.main(JavaApplication2.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));
    }
}

1 个答案:

答案 0 :(得分: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();

有关详细信息,请参阅thisthis个问题。