注册 登录
编程论坛 JAVA论坛

我遇到一个问题 怎么都解决了 有大神给我看看 ----谢谢

柳逸尘 发布于 2016-08-10 09:08, 2716 次点击
程序代码:
public abstract class Animal {
    private String name;

    public Animal() {
        
    }
    public Animal(String name) {
        this.name=name;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public abstract void call();

}
class Animalbass{
    Animal[] dolphins=new Animal[4];
   
}

程序代码:

public class Dog extends Animal implements Refund {

    private int refund;
    public Dog(){
        
    }
    /*public Dog(String name,int refund){
        super(name);
        this.refund=refund;
    }
*/
    public int getRefund() {
        return refund;
    }

    public void setRefund(int refund){        
            this.refund = refund;
    }

    public void refund() throws Exception{
        if(refund!=4){
            throw new Exception("狗狗的腿是四肢");
        }
    }

    @Override
    public void call() {
        System.out.println("汪汪。。。");

    }

}

程序代码:

public class Dolphins extends Animal{

    public Dolphins(){
        
    }
    public Dolphins(String name){
        super(name);
    }
    public void call() {
        System.out.println("海豚之音。。。");
    }

}

程序代码:
public class Duck extends Animal implements Refund {
    private int refund;
    public Duck(){
        
    }
    public Duck(String name,int refund){
        super(name);
        this.refund=refund;
    }
    public int getRefund() {
        return refund;
    }

    public void setRefund(int refund){   
        this.refund = refund;
    }
    @Override
    public void refund()  throws Exception {
        // TODO Auto-generated method stub
        try{
        if(refund!=2){
            throw new Exception("鸭子的腿是两肢");
            
        }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void call() {
        System.out.println("嘎嘎。。。");
        
    }

}

程序代码:

public interface Refund {
    void refund() throws Exception;
}

程序代码:

import java.util.InputMismatchException;
import java.util.Scanner;

public class Text {

    private static Scanner input;

    public static void main(String[] args) {
        input = new Scanner(System.in);
        int choose = 0;
        do {
            System.out.println("请选择动物");
            System.out.println("1.狗狗");
            System.out.println("2.鸭子");
            System.out.println("3.海豚");
            System.out.println("4.退出");
            System.out.println("请输入你的选择:");
            choose = input.nextInt();
            switch (choose) {
            case 1:
                dog();
                break;
            case 2:
                duck();
                break;
            case 3:
                dolphins();
                break;
            case 4:
                System.exit(0);
            }
            System.out.println("-------------");
            System.out.println("输入任意数返回:");
            choose = input.nextInt();
        } while (choose != 241349112);
    }

    public static void dog() {

        int refund = 0;
        boolean flag = false;
        do {
            try {
                Dog a = new Dog();
            //  System.out.println(((Dog) a).getName());
                System.out.println("输入狗狗的名字:");
                String name = input.next();
                ((Dog) a).setName(name);
            //    System.out.println(((Dog) a).getName());
                System.out.println("请输入狗狗的腿的个数:");
                try{
                refund = input.nextInt();
               
                // input.hasNextInt(refund);
                }catch(InputMismatchException i){
                    flag=true;
                //    i.printStackTrace();
                }
                ((Dog) a).setRefund(refund);
                ((Dog) a).refund();
            //    System.out.println(((Dog) a).getRefund());
                System.out.println("这个狗狗名字是:" + ((Dog) a).getName() + ",有" + ((Dog) a).getRefund() + "条腿");
                a.call();
                flag = false;
            } catch (Exception e) {
                System.out.println(e);
                flag = true;
            }
        } while (flag);
    }

    public static void duck() {

        int refund = 0;
        boolean flag = false;
        do {
            try {
                Animal a = new Duck();
                System.out.println("输入鸭子的名字:");
                String name = input.next();
                ((Duck) a).setName(name);

                System.out.println("请输入鸭子的腿的个数:");
                refund = input.nextInt();
                ((Duck) a).setRefund(refund);
                ((Duck) a).refund();

                System.out.println("这个鸭子名字是:" + ((Duck) a).getName() + ",有" + ((Duck) a).getRefund() + "条腿");
                a.call();
                flag = false;
            } catch (Exception e) {
                System.out.println(e);
                flag = true;
            }
        } while (flag);
    }

    public static void dolphins() {

        boolean flag = false;
        do {
            try {
                Animal a = new Dolphins();
                System.out.println("输入海豚的名字:");
                String name = input.next();
                ((Dolphins) a).setName(name);
                System.out.println("这个海豚名字是:" + ((Dolphins) a).getName() + ",海豚没有腿的");
                a.call();
                flag = false;
            } catch (Exception e) {
                System.out.println(e);
                flag = true;
            }
        } while (flag);
    }

}

5 回复
#2
柳逸尘2016-08-10 09:13
只有本站会员才能查看附件,请 登录

只要腿的个数是字符串时,就会出现名字和腿数同时出现,这时输入的是字符串就是名字输入的数字就是腿数  
就是这个问题   
我想要的结果是无论是输入什么都是进行一次的名字的输入的  再腿数的输入  
#3
柳逸尘2016-08-10 09:14
大神们  可以加我的QQ645954450,我们探讨一下
#4
wuxiaobo_162016-08-10 10:29
实在看不下去,懒婆娘的裹脚布,又臭又长
#5
西瓜shine2016-08-10 21:10
因为你的refund=input.nextInt()
所以你输入字符d时,refund并没有从输入流中得到该字符d。
第二次循环时,你的String name = input.next();从输入流中得到了上次的字符d
于是紧接着对refund=input.nextInt()操作,等待你输入refund的值,而不是name的值。

在对refund赋值之前,可以对输入流中的数据进行异常判断,如果是int就赋值,不是int就抛出异常。
#6
aijiao06242016-09-09 18:39
没看明白问题是什么!
1