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

    }
}
4

2 回答 2

0

有一个jars从未初始化过的执行路径,特别是 if line.hasNextInt()is false

要使用它,您必须确保jars始终初始化为某些东西。您可以将其初始化为0if.

于 2013-10-12T00:45:50.673 回答
0

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

于 2013-10-12T00:46:23.320 回答