我在程序中遇到“键盘”问题

时间:2013-09-26 07:41:46

标签: java

我们的任务目标是在两个不同的班级(学生,年级)中实施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)

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

我认为Keyboard要在您的计划中使用Scanner

在文件中包含以下行

import java.util.Scanner;

并创建它的实例。

Scanner keyboard = new Scanner(System.in);

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

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

  

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

答案 1 :(得分:0)

您似乎缺少键盘工具的导入。 Java: Input strings with keyboard class

尝试导入它,应该做的伎俩。

P.S:已在另一个主题中讨论过这个问题。

答案 2 :(得分:-1)

使用

 Scanner sc = new Scanner(System.in); 

而不是键盘