错误:可能尚未初始化局部变量jar

时间:2013-10-12 00:44:07

标签: java variables compiler-errors local

进一步向下,它一直说当两个局部变量不能被初始化。似乎无法找到问题

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);

    }
}

2 个答案:

答案 0 :(得分:0)

有一条执行路径,jars从未初始化,具体来说,如果line.hasNextInt()false

要使用它,您必须确保始终将jars初始化为某些内容。您可以在0之前将其初始化为if

答案 1 :(得分:0)

首次运行if(line.hasNextInt())为假时会发生什么?