【问题标题】:Unknown java netbeans error未知的 java netbeans 错误
【发布时间】:2015-08-29 20:31:03
【问题描述】:

为什么程序无法运行?当我在第一个问题输入“1”,然后在第二个问题输入一些内容时,会出现一个红色文本:(程序没有完成,但它应该可以工作,不是吗?)

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

【问题讨论】:

    标签: java netbeans


    【解决方案1】:

    这里,问题不在于 Netbeans。 sc.nextLine() 是罪魁祸首。在按下回车键输入选项后,回车符被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问题。

    【讨论】:

    • 很简单。当您输入选择为 1 或 2 时,您已使用 sc.nextInt() 从用户扫描,现在您按回车键转到新行以输入您尝试存储在 krypt 中的字符串.在这里,sc.nextInt() 只接受数字部分而不是输入(回车部分 - \n)希望现在有点清楚了。
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多