| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2492 人关注过本帖
标题:我遇到一个问题 怎么都解决了 有大神给我看看 ----谢谢
只看楼主 加入收藏
柳逸尘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:131
注 册:2015-8-10
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:5 
我遇到一个问题 怎么都解决了 有大神给我看看 ----谢谢
程序代码:
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);
    }

}

2016-08-10 09:08
柳逸尘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:131
注 册:2015-8-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

只要腿的个数是字符串时,就会出现名字和腿数同时出现,这时输入的是字符串就是名字输入的数字就是腿数  
就是这个问题   
我想要的结果是无论是输入什么都是进行一次的名字的输入的  再腿数的输入  
2016-08-10 09:13
柳逸尘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:131
注 册:2015-8-10
收藏
得分:0 
大神们  可以加我的QQ645954450,我们探讨一下
2016-08-10 09:14
wuxiaobo_16
Rank: 2
等 级:论坛游民
威 望:3
帖 子:12
专家分:81
注 册:2016-8-7
收藏
得分:10 
实在看不下去,懒婆娘的裹脚布,又臭又长
2016-08-10 10:29
西瓜shine
Rank: 2
等 级:论坛游民
帖 子:15
专家分:79
注 册:2016-7-22
收藏
得分:10 
因为你的refund=input.nextInt()
所以你输入字符d时,refund并没有从输入流中得到该字符d。
第二次循环时,你的String name = input.next();从输入流中得到了上次的字符d
于是紧接着对refund=input.nextInt()操作,等待你输入refund的值,而不是name的值。

在对refund赋值之前,可以对输入流中的数据进行异常判断,如果是int就赋值,不是int就抛出异常。
2016-08-10 21:10
aijiao0624
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:65
注 册:2016-7-19
收藏
得分:0 
没看明白问题是什么!
2016-09-09 18:39
快速回复:我遇到一个问题 怎么都解决了 有大神给我看看 ----谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021709 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved