java - 尽管Java中没有任何错误,但在输入Char之前代码崩溃

标签 java arrays loops netbeans crash

我正在编写代码,要求我将华氏温度转换为摄氏温度,反之亦然,并将它们存储在数组中。完成并解决了侧面显示的错误之后,到达循环结束后仍然设法崩溃。我尝试做一些我在网上看到的事情,但到目前为止似乎没有任何效果。我正在使用NetBeans IDE 8.0.2

我得到的错误是:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0

完整的代码是:

package assignment.pkg1;

import java.util.Scanner;

public class Assignment1 {

public static void main(String[] args) 
{
 controller();
}
//----------------------------controller()--------------------------------------   
public static void controller()
{
 Scanner kb = new Scanner(System.in);
 double num[]=new double[10], cel, fah, tem;
 char ch;
 for(int x=0; x<10; x++)    //This loops ten times to get ten tempretures
    {
     System.out.print("Please enter your tempreture :");
     num[x]=kb.nextDouble();
    }

 System.out.println();
 System.out.println("Is the data you are entering in Fahrenheit or Celcius?");
 System.out.println("Please enter C for Celcius or F for Fahrenheit : ");

 ch = kb.nextLine().charAt(0);
 if (ch !='C' || ch !='c')
 {
     for(int x =0;x<10;x++)
        {
         fah=ctof(num[x]);
         System.out.println(num[x]+" degrees C = "+fah+" degrees F");
     } 
 }
 if (ch =='F' || ch =='f')
 {
     for(int x =0;x<10;x++)
        {
         cel=ftoc(num[x]);
         System.out.println(num[x]+" degrees F = "+cel+" degrees C");
  }
 }

}
//----------------------------ctog()--------------------------------------------
public static double ctof(double cel)
{
 double tem;
 //fah = cel / 5 + 32;
 tem = (cel / 5) + 32;
 return tem;
}
//----------------------------ftoc()--------------------------------------------     
    public static double ftoc(double fah)
    {
     double tem;
     //cel = (fah - 32)/9 * 5
     tem = (fah - 32) /9 * 5; 
     return tem;
    }
}

最佳答案

在调用kb.nextLine();之后,在您的for循环中添加.nextDouble();,因为nextDouble()不占用换行符(\ n)。

如果不这样做,您将为没有第一个索引的空字符串执行charAt(0) \\ first index

关于java - 尽管Java中没有任何错误,但在输入Char之前代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59056917/

相关文章:

arrays - jQuery 选项卡 : disable first tab, 选择第二个

c++ - Visual Studio 2013编程 "<<"是不是匹配操作数?

android - Android Media Player播放两次后停止

javascript - 在 Javascript 中格式化数组循环的日期输出

java - 我可以在 Spring 项目中将单独的 Xtend 文件与我的 Java 源文件混合在一起吗?

java - Google+ 身份验证错误 google_too_many_active_tokens

java - Java 的最佳 XML 解析器

java - Rijndael 128/256解密

Java:如何将列表转换为泛型类型的数组

c - 运行冒泡排序后出现运行时错误