2013-10-12 34 views
0

进一步下来,它一直说当两个局部变量不能初始化时。不能似乎找到了问题错误:局部变量罐可能没有被初始化

import java.io.*; 
import java.util.Scanner; //Scanner method 

public class Popcorn1 { 

    public static void main(String args[]) throws FileNotFoundException{ 

    printHeader(); 

    File file; 

    do { 
     Scanner in = new Scanner (System.in); 
     System.out.println("Enter the the file name"); 
     String filename = in.next(); 

     file = new File(filename); 
    } while(!file.exists()); 

    FileReader inputFile = new FileReader (file); 
    Scanner inFile = new Scanner(inputFile); 

    System.out.println("  PopCorn Co-op"); 
    System.out.println("          Production in Hundreds"); 
    System.out.println("          of Pint Jars Per Acre"); 
    System.out.println("         1 2 3 4 5 6"); 
    System.out.println("Farm Name      ---|---|---|---|---|---|"); 
    System.out.println(); 

    // Printing out title and table header for reader to easily read data 
    String errorMSG = " "; 

    while (inFile.hasNextLine()) { 
     String inputLine = inFile.nextLine(); 
     //System.out.print(inputLine); 
     int position; 
     String name; 
     int jars; 
     double acres; 

     position = inputLine.indexOf(',');       //Get the Location of the comma to use as a delimiter 

     name = inputLine.substring(0,position);     //Everything to the left of the comma is the farm name 

     System.out.printf("%-31s", name); 

     inputLine = inputLine.substring(position + 2,inputLine.length());   //rest of the string 
     Scanner line = new Scanner(inputLine); 

     if(line.hasNextDouble()) 
      acres = line.nextDouble(); 
     else 
      errorMSG += "There is missing data"; 

     if(line.hasNextInt()) 
      jars = line.nextInt(); 
     else 
      errorMSG += "There is missing data"; 

     int starsConversion =(int)(jars/acres/25);  **<-------- problem is here** 

     for (int i = 1; i < starsConversion; i++) { 
      if(i == 20) 
       System.out.print("#"); 
      else 
       System.out.print("*"); 
     } 
     if (starsConversion < 20) { 
      for (int i = 1; i < (21 - starsConversion); i++) { 
       System.out.print(" "); 
      } 
      System.out.print("|");} 
      System.out.println(); //go to the next line 

     } 

     System.out.println(errorMSG); 

    } 
} 

回答

0

有一种情况jars从未初始化,具体地说,如果line.hasNextInt()false的执行路径。

要使用它,您必须确保jars始终被初始化为某种东西。您可以在if之前将其初始化为0

0

如果if(line.hasNextInt())在第一次运行时为false,会发生什么情况?