初学Java - 找不到符号错误?

时间:2013-05-24 14:17:59

标签: java

我一直想弄清楚为什么这个基本的java程序不会运行。我得到约7找不到符号错误。任何帮助将非常感激。我很想知道我做错了什么。

该程序只是一些基本的计算,提示某些输入和输出数据显示调速器的罚款。

import java.io.*;
import java.util.*;

public class Lab1 {
public static void main (String args[]) {

    // Create a scanner to read from keyboard
    Scanner kbd = new Scanner(System.in);

    System.out.print("\nEnter Driver's FIRST Name.");
    String firstName = kbd.next();

    System.out.print("\nEnter Driver's LAST Name.");
    String lastName = kbd.next();

    System.out.print("\nEnter Driver's Age.");
    int age = Integer.parseInt(kbd.next());

    System.out.print("\nEnter the Speed Limit.");
    int speedLimit = Integer.parseInt(kbd.next());

    System.out.print("\nEnter Driver's Actual Speed");
    int actualSpeed = Integer.parseInt(kbd.next());

    System.out.print("\nDid violation occur in construction zone? (yes/no)");
    String constructionZone = kbd.next();

    int speedDifference = (actualSpeed - speedLimit);



    if (speedDifference <= 5) {
        int baseFine = 0;
    }
    else if(speedDifference >= 20) {
        int baseFine = (speedDifference / 5) * 50;
    }
    else {
        int baseFine = (speedDifference / 5) * 30;
    }



    if(constructionZone.equals("yes")) {
        int constructionFine = 10;
    }
    else {
        int constructionFine = 0;
    }



    if(age <= 21 && speedDifference >= 20) {
        int underageFine = 300;
    }
    else {
        int underageFine = 0;
    }



    int totalFine = baseFine + constructionFine + underageFine;

    System.out.println("Last Name: " + lastName);
    System.out.println("First Name: " + firstName);
    System.out.println("Driver Age: " + age);
    System.out.println("Speed Limit: " + speedLimit);
    System.out.println("Actual Speed: " + actualSpeed);
    System.out.println("MPH Over Limit: " + speedDifference);
    System.out.println("Base Fine: $" + baseFine);
    System.out.println("Construction Zone Fine: $" + constructionFine);
    System.out.println("Underage Fine: $" + underageFine);
    System.out.println("Total Fine: $" + totalFine);

}
}

3 个答案:

答案 0 :(得分:5)

您的变量baseFineconstructionFineunderageFine是在if语句范围内定义的。将它们声明在该范围之外,以便它们在main方法的范围内可见。例如

int baseFine = 0;
if (speedDifference <= 5) {
     baseFine = 0;
}

答案 1 :(得分:1)

baseFineconstructionFineunderageFine这三个变量未正确声明。您已在本地范围内声明了这三个。但在范围之外,它无法被识别。 因此,将它们声明为类成员。

什么是可变范围

因为你是java的初学者,所以我想你最好知道变量范围是什么。

变量的范围是程序中可以引用变量名称的部分。

您可以在几个不同的地方声明变量:

  • 在类体中作为类字段。
  • 作为方法或构造函数的参数。
  • 在方法的主体或构造函数的主体中。
  • 在一个语句块中,例如在一段时间内或用于阻止。

变量范围是指变量的可访问性。你既不能在声明之前引用变量,也不能在范围之外使用它们

答案 2 :(得分:0)

您有可变范围问题

underageFine,constructionFine和baseFine需要在if / elso之外定义,以便方法的其余部分可以访问。