Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尽管在Java中没有错误,但在输入Char之前代码崩溃_Java_Arrays_Loops_Netbeans_Crash - Fatal编程技术网

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

尽管在Java中没有错误,但在输入Char之前代码崩溃,java,arrays,loops,netbeans,crash,Java,Arrays,Loops,Netbeans,Crash,我正在为一项任务编写代码,任务要求我将华氏温度转换为摄氏温度,反之亦然,并将其存储在数组中。在完成这项工作并对它在侧面显示的错误进行排序之后,它仍然能够在到达循环末尾后崩溃。我试着做了一些我在网上看到的事情,但到目前为止似乎没有任何效果。我正在使用NetBeans IDE 8.0.2 我得到的错误是:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 完整代码为: package assignment.pkg1; import java.

我正在为一项任务编写代码,任务要求我将华氏温度转换为摄氏温度,反之亦然,并将其存储在数组中。在完成这项工作并对它在侧面显示的错误进行排序之后,它仍然能够在到达循环末尾后崩溃。我试着做了一些我在网上看到的事情,但到目前为止似乎没有任何效果。我正在使用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;
    }
}
package assignment.pkg1;
导入java.util.Scanner;
公共课堂作业1{
公共静态void main(字符串[]args)
{
控制器();
}
//----------------------------控制器()-------------------------------------
公共静态无效控制器()
{
扫描仪kb=新扫描仪(System.in);
双精度数值[]=新双精度[10],cel、fah、tem;
char ch;
for(int x=0;x在调用
.nextDouble();
后,在for循环中添加
kb.nextLine();
,因为nextDouble()不使用换行符(\n)


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

此问题是由于
kb.nextDouble();
没有使用换行符。要解决此问题,您可以在
ch=kb.nextLine();
之前调用
kb.nextLine().charAt(0)

通常在抛出ArrayOutOfBoundException时会显示stacktrace。可能显示异常的行号会帮助您找到可能重复的错误