想知道为什么这个程序运行不了,编译没问题,但是打不开控制台,点击运行后鼠标一直在转圈圈。在eclipse上面运行的(主方法在本文最下方)。我在eclipse上搜索“控制台”,它显示“无效的线程访问”。
package MyPackage;
public abstract class Origin {
protected int Pos;
protected int Gear;
protected int Speed;
public Origin() {
Pos=0;
Gear=1;
Speed=0;
}
public int getPos() {
return Pos;
}
public void setPos(int pos) {
Pos = pos;
}
public int getGear() {
return Gear;
}
public void setGear(int gear) {
Gear = gear;
}
public int getSpeed() {
return Speed;
}
public void setSpeed(int speed) {
Speed = speed;
}
public abstract void upPos();
public abstract void downPos();
public abstract void upGear();
public abstract void downGear();
public abstract void sum_speed();
public void show_details() {
System.out.println("当前档位为:"+getPos());
System.out.println("当前刻度盘指针为:"+getGear());
System.out.println("当前速度为:"+getSpeed());
}
}
package MyPackage;
public class Triple extends Origin {
@Override
public void upPos() {
if(getPos()<3) {
Pos++;
}
else {
System.out.println("无法再提高一个档位!");
}
}
@Override
public void downPos() {
if(getPos()>0) {
Pos--;
}
else {
System.out.println("无法再下降一个档位!");
}
}
@Override
public void upGear() {
if(getGear()<3) {
Gear++;
}
else {
System.out.println("无法再将刻度盘指针上调!");
}
}
@Override
public void downGear() {
if(getGear()>1) {
Gear++;
}
else {
System.out.println("无法再将刻度盘指针下调!");
}
}
@Override
public void sum_speed() {
switch(getPos()) {
case 0:Speed=0;break;
case 1:switch(getGear()) {
case 1:Speed=4;break;
case 2:Speed=6;break;
case 3:Speed=12;break;
};break;
case 2:Speed=30;break;
case 3:Speed=60;break;
}
}
}
package MyPackage;
public class Quadra extends Origin{
@Override
public void upPos() {
if(getPos()<4) {
Pos++;
}
else {
System.out.println("无法再提高一个档位!");
}
}
@Override
public void downPos() {
if(getPos()>0) {
Pos--;
}
else {
System.out.println("无法再下降一个档位!");
}
}
@Override
public void upGear() {
if(getGear()<4) {
Gear++;
}
else {
System.out.println("无法再将刻度盘指针上调!");
}
}
@Override
public void downGear() {
if(getGear()>1) {
Gear++;
}
else {
System.out.println("无法再将刻度盘指针下调!");
}
}
@Override
public void sum_speed() {
switch(getPos()) {
case 0:Speed=0;break;
case 1:switch(getGear()) {
case 1:Speed=4;break;
case 2:Speed=6;break;
case 3:Speed=12;break;
case 4:Speed=20;break;
};break;
case 2:Speed=30;break;
case 3:Speed=60;break;
case 4:Speed=90;break;
}
}
}
package MyPackage;
import java.util.Scanner;
public class Temp {
private int flag; //操作标志:0代表不做任何操作;1代表控制杆上调;-1代表控制杆下调;2代表刻度盘指针上调;-2代表刻度盘指针下调。
Scanner input=new Scanner(System.in);
public Temp() {
flag=0;
}
public int getFlag() {
return flag;
}
public void setFlag() {
flag=input.nextInt();
}
public void promptTable() {
System.out.println("请按照下面提示输入操作命令:");
System.out.println("0----------不做任何操作;");
System.out.println("1----------上调控制杆;");
System.out.println("-1---------下调控制杆;");
System.out.println("2----------上调刻度盘指针;");
System.out.println("-2---------下调刻度盘指针;");
}
public void Control(Origin origin) {
promptTable();
while(flag!=-404) {
setFlag();
if(getFlag()==0) {
origin.show_details();
}
else if(getFlag()==1) {
origin.upPos();
origin.sum_speed();
origin.show_details();
}
else if(getFlag()==-1) {
origin.downPos();
origin.sum_speed();
origin.show_details();
}
else if(getFlag()==2) {
origin.upGear();
origin.sum_speed();
origin.show_details();
}
else if(getFlag()==-2){
origin.downGear();
origin.sum_speed();
origin.show_details();
}
}
}
}
package MyPackage;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Triple triple=new Triple();
Quadra quadra=new Quadra();
Temp temp=new Temp();
Scanner input=new Scanner(System.in);
int selection=input.nextInt();
switch (selection) {
case 1: {
temp.Control(triple);
}break;
case 2:{
temp.Control(quadra);
}break;
default:
throw new IllegalArgumentException("Unexpected value: " + selection);
}
}
}