【问题标题】:Unable to Compile Java Code to Implement " interface " [duplicate]无法编译 Java 代码以实现“接口”[重复]
【发布时间】:2025-12-16 05:45:01
【问题描述】:

我无法编译和执行java代码。这是关于实现多继承接口的程序 这是下面的代码:

//Interface Implementation
import java.util.Scanner;
interface Sports
{
int sportswt = 12;
}
class Student
{
int rollno;
String name;
Scanner sc = new Scanner(System.in);
void getData()
{
    System.out.println("Name and Roll no :");
    rollno = sc.nextInt();
    name = sc.nextLine();
}
}
class Marks extends Student implements Sports
{
 Scanner sc = new Scanner(System.in);
 int m1 = sc.nextInt();
 int m2 = sc.nextInt();
 System.out.println("Name is : " + name + "\nRoll no is : " + rollno);
 System.out.println("Marks1 : " +m1+ "\nMarks2 : " +m2+"\nTotal is : " + 
 (m1+m2+sportswt)); 
 }
  class InterfaceImplementation6
  {
   public static void main(String[] args){
    Marks mobj = new Marks();
    mobj.getData();
   }
  }

有人可以帮忙吗! 我收到此错误:

【问题讨论】:

  • 这不是编译错误。并且不要将其发布在图片中,将其作为文本发布在您的问题中。
  • 那么错误是什么?
  • @user6369925 这是一个运行时错误,请参阅Runtime VS Compile time,您应该将错误发布为文本而不是图片,正如已经建议的那样。此外,请正确格式化您的代码。如果没有格式正确的帖子,您可能会被忽略或投反对票。
  • 上面的代码无法编译,Marks 类在类本身内嵌了代码,这是否打算成为覆盖 getData() 方法内的代码?

标签: java multiple-inheritance


【解决方案1】:

主要问题在于使用nextLine() 而不仅仅是next()

我对代码进行了一点重构,使其更清晰:

import java.util.Scanner;

interface Sports {
    int sportswt = 12;
}

class Student {
    int roll;
    String name;

    void getData() {
        System.out.println("Name and roll number:");
        Scanner sc = new Scanner(System.in);
        name = sc.next(); //if you first ask for name, read the name first
        roll = sc.nextInt();
    }
}

class Marks extends Student implements Sports {

    @Override
    void getData() {
        super.getData();
        Scanner sc = new Scanner(System.in);
        int mark1 = sc.nextInt(); //be more descriptive on your variable names
        int mark2 = sc.nextInt();
        int total = mark1 + mark2 + sportswt; //try to extract operations out of the println() function, so is easier to understand
        System.out.println("Name is : " + name + "\nRoll no is : " + roll);
        System.out.println("Marks1 : " + mark1 + "\nMarks2 : " + mark2 + "\nTotal is : " + total);
    }
}

class InterfaceImplementation6 {

    public static void main(String[] args) {
        Marks mobj = new Marks();
        mobj.getData();
    }
}

【讨论】:

  • 非常感谢..帮了大忙!!