【问题标题】:Im having trouble with 'keyboard' in my program我的程序中的“键盘”有问题
【发布时间】:2013-09-26 07:41:46
【问题描述】:

我们的作业目标是在两个不同的班级(学生,成绩)中实现 3 名学生的成绩,并找到平均成绩 这是我到目前为止所拥有的,

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

            Student bob, john, matt;
            Grades grades; 

            grades = new Grades();

            double bobgrade, johngrade, mattgrade;

            bob = new Student();
            john = new Student();
            matt = new Student();

            bob.setup();
            john.setup();
            matt.setup();

            bob.display();
            john.display();
            matt.display();

            bobgrade = bob.overallGrade();
            johngrade = john.overallGrade();
            mattgrade = matt.overallGrade();

            grades.average(bobgrade, johngrade, mattgrade);



    System.out.println("The overall grade for the class is: " +    grades.theSectionAverage);
            }






public class Student
{
    Grades grades; 
    String fullName, firstName, lastName, name;
    int studentProgramGrade, studentExamGrade;

    public void setup(){
    setName();
    setGrades();
    }

    public void setName()
    {

    System.out.print("Please, enter the student's name in the form of Doe, John or Smith, Jane:");
    fullName = Keyboard.readString();

    firstName = fullName.substring(fullName.indexOf(" ") + 1, fullName.length()); 
    lastName = fullName.substring(0, fullName.indexOf(","));


    name = firstName + " " + lastName;
    }

    public void setGrades()
    {
    studentExamGrade = grades.setupExam(name);
    studentProgramGrade = grades.setupProgram(name);
    } 

    public void display()
    {
    System.out.println(name + " " + grades.display());
    } 

    public double overallGrade()
    {
    final double PROGRAM_WEIGHT = 0.40;
    final double EXAM_WEIGHT = 1 - PROGRAM_WEIGHT;

    double theOverallGrade;

    theOverallGrade = studentProgramGrade * PROGRAM_WEIGHT + studentExamGrade * EXAM_WEIGHT;

    return theOverallGrade;
    }
}






    public class Grades {


    int programGrade, examGrade;
    double theSectionAverage;

    public int setupExam(String studentname)
    {
    System.out.print("Please, enter the exam grade for " + studentname + ":");
    examGrade = Keyboard.readInt();


    return examGrade;
    }

    public int setupProgram(String studentname)
    {
    System.out.print("Please, enter the program grade for " + studentname + ":");
    programGrade = Keyboard.readInt();

    return programGrade;
    }

    public String display()
    {
    return programGrade + " " + examGrade;
    }

    public double average(double bobgrade, double johngrade, double mattgrade)
    {
    theSectionAverage = bobgrade + johngrade + mattgrade / 3;

    return theSectionAverage;
    }
    }

每当我尝试运行它时,我都会不断收到此错误:

线程“main”java.lang.Error 中的异常:未解决的编译问题: 键盘无法解析

at Student.setName(Student.java:18)
at Student.setup(Student.java:10)
at Program01.main(Program01.java:19)

任何帮助将不胜感激。

【问题讨论】:

  • 正如它所说的那样......Keyboard是什么?
  • 如果 Keyboard 是我怀疑的 Scanner,您既不声明也不初始化它。
  • @WilliamGaul 我认为这是一个外部类或其他东西..
  • @MarounMaroun 哎呀,扫描仪是 nextInt() 不是 readInt()...但仍然应该声明。
  • 您的班级中似乎没有声明键盘变量

标签: java


【解决方案1】:

我认为Keyboard 你想在你的程序中使用Scanner

在您的文件中包含以下行

import java.util.Scanner;

并创建它的一个实例。

Scanner keyboard = new Scanner(System.in);

或者您有一些其他 API 有一个名为 Keyboard 的类,然后将该文件导入您的程序。

注意:顺便说一下Scanner没有readInt()方法,它只有nextInt()

当您使用 Eclipse 作为 IDE 并尝试运行甚至无法编译的代码时,可能会发生此错误。检查 Eclipse 中的问题视图,并在执行应用程序之前修复编译错误。

【讨论】:

  • 谢谢你的回答,但你能解释一下我应该在哪里包含'import java.util.scanner;'在文件中?我对 java 很陌生
  • 在文件顶部 package 声明之后(如果有的话)。
  • @gvnvhri 因为你所有的类都是公共的,你应该在它自己的文件中定义每个类,并且在任何使用Scanner的类中你必须包含import java.util.Scanner。 import 语句应该是文件中的第一行(如果你不使用包)
  • 很明显,这是一个RUNTIME异常,所以编译成功了!这与执行的类路径设置有关。
  • @GyroGearless:如果使用 Eclipse 运行无法编译的代码,可能会抛出此异常。
【解决方案2】:

您似乎缺少键盘实用程序的导入。 Java: Input strings with keyboard class

尝试导入它,应该可以解决问题。

P.S:这已经在另一个话题中讨论过了。

【讨论】:

    【解决方案3】:

    使用

     Scanner sc = new Scanner(System.in); 
    

    代替键盘

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多