Java错误:“ java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0”进行do-while循环

时间:2018-09-26 18:20:12

标签: java exception exception-handling

因此,我尝试遍历具有类似问题的其他线程,但是我无法真正将它们与我当前的问题联系起来,因为其中大多数都提出了我在计算机科学1大学课程中目前还没有教过的解决方案

无论如何,如果您看一下我的代码,我试图获得用户输入,以继续执行代码并执行更多计算,或者停止程序。他们将输入y(是)以继续,或输入任何其他字符来终止程序。在我输入cardNumber的下一个值之前,一切似乎都可以进行。它使用我的服务类,进行数学运算和所有操作,然后询问是否要再次继续,但随后被告知。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:44)
at java.base/java.lang.String.charAt(String.java:692)
at CreditCardDemo.main(CreditCardDemo.java:48)

现在,我像我说的那样浏览了其他线程,之前也曾见过类似的错误,但是我仍然不明白该错误告诉我什么或如何解决。我正在按照错误提示看待第48行,但我仍然不明白为什么会收到此错误,尤其是因为我使用了

    repeat = input.charAt(0);
    kb.nextLine(); 

以前在我的代码中,它工作正常...

真的很抱歉,如果我错过了一些线索,那是超级解释,对我有帮助,但是我找不到它(如果存在)。有人可以帮我吗?

public class CreditCardDemo
{
   public static void main(String [] args)
   {
      int cardNumber;
      String input;
      char repeat;

      Scanner kb = new Scanner(System.in);

      CreditCard card1 = new CreditCard(67034014);
      CreditCard card2 = new CreditCard();

      System.out.print("Enter 8 digit credit card number: " + card1.getCardNumber());
      card1.outputTest();
      System.out.println();

      System.out.println("Continue(y/n)?");
      input = kb.nextLine();
      repeat = input.charAt(0);
      if (repeat != 'y')
      {
         System.exit(0);
      }


      do
      {
            System.out.print("Enter 8 digit credit card number: ");
            card2.setCardNumber(kb.nextInt()); 
            card2.outputTest();

            System.out.println("Continue(y/n)?");
            input = kb.nextLine();
            repeat = input.charAt(0);
            kb.nextLine();
      }
         while (repeat == 'y');

   }
}

0 个答案:

没有答案