我一直想弄清楚为什么这个基本的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);
}
}
答案 0 :(得分:5)
您的变量baseFine
,constructionFine
和underageFine
是在if
语句范围内定义的。将它们声明在该范围之外,以便它们在main
方法的范围内可见。例如
int baseFine = 0;
if (speedDifference <= 5) {
baseFine = 0;
}
答案 1 :(得分:1)
baseFine
,constructionFine
,underageFine
这三个变量未正确声明。您已在本地范围内声明了这三个。但在范围之外,它无法被识别。
因此,将它们声明为类成员。
什么是可变范围
因为你是java的初学者,所以我想你最好知道变量范围是什么。
变量的范围是程序中可以引用变量名称的部分。
您可以在几个不同的地方声明变量:
变量范围是指变量的可访问性。你既不能在声明之前引用变量,也不能在范围之外使用它们
答案 2 :(得分:0)
您有可变范围问题
underageFine,constructionFine和baseFine需要在if / elso之外定义,以便方法的其余部分可以访问。