0

我一直在试图弄清楚为什么这个基本的 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);

}
}
4

3 回答 3

5

你的变量baseFine,constructionFineunderageFine是在声明范围内定义的if。在该范围之外声明它们,以便它们在main方法范围内可见。例如

int baseFine = 0;
if (speedDifference <= 5) {
     baseFine = 0;
}
于 2013-05-24T14:20:23.080 回答
1

baseFine, constructionFine,underageFine这 3 个变量没有正确声明。您已在本地范围内声明了这三个。但超出范围则无法识别。所以将它们声明为类成员。

什么是可变范围

由于您是 java 的初学者,所以我认为您最好了解变量范围是什么。

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

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

  • 在类体中作为类字段。
  • 作为方法或构造函数的参数。
  • 在方法的主体或构造函数的主体中。
  • 在语句块内,例如在 while 或 for 块内。

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

于 2013-05-24T14:21:08.487 回答
0

你有变量范围问题

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

于 2013-05-24T14:20:43.377 回答