package study;
import java.util.Scanner;
public abstract class GuessGame {
Scanner in = new Scanner(System.in);
public void go(){
int number = (int)Math.random()*10;
int guess;
do{
guess = nextInt();
}while(guess != number);
println("猜中了");
}
public void println(String text){
print(text + "\n");
}
public abstract void print(String text);
public abstract int nextInt();
public static void main(String[] args) {
ConsoleGame da = new ConsoleGame();
da.go();
}
}
class ConsoleGame extends GuessGame{
@Override
public void print(String text) {
System.out.print(text);
}
@Override
public void println(String text){
System.out.println(text);
}
@Override
public int nextInt() {
// TODO 自动生成的方法存根
return in.nextInt();
}
}
为什么两个class会放在一个文件里?????
方法类型不对应,一个是study下的String类型,一个是Java自带的String类型,两种方法,一是删除@Override修饰,二就是你不调用print()方法,直接使用System.out.print(“猜中了”);
你的study下是不是有个 String 类?? 导入 import java.lang.String, 将study下的String类重命名,最好别跟jar包中的同名。
println()是C的输出写法
System.out.print()/System.out.println();是java中的写法System.out::println是java中配合lambda的写法
换成System.out.print()或者System.out.println();
这样试试:
ConsoleGame cg = new ConsoleGame();
cg.println("猜中了");
或者:
System.out.println("猜中了");
ConsoleGame 这个子类只需要重写public abstract void print(String text);
这个抽象 方法取可,不用重写 println这个。
你的println方法不是静态的,不可以直接调用,必须创建对象,通过对象调用方法