黑马程序员技术交流社区

标题: 新学的集合用法 [打印本页]

作者: toypaoa    时间: 2015-10-16 20:40
标题: 新学的集合用法
农夫有 猫 狗 鱼三个动物,要用船过河,每次运一个动物,狗吃猫,猫吃鱼,要怎么样才能过河呢?通过集合体现

package it.heima.list;

import java.lang.Thread.State;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.tree.DefaultTreeCellEditor.EditorContainer;
import javax.xml.stream.events.EntityDeclaration;

public class ListDemo {
        ArrayList<String> startList = new ArrayList<>();
        ArrayList<String> endList = new ArrayList<>();

        public ListDemo() {
                startList.add("fish");
                startList.add("cat");
                startList.add("dog");
        }

        public static void main(String[] args) {
                ListDemo demo=new ListDemo();
                demo.toTake();
        }

        public boolean isSafe(ArrayList<String> list) {
                boolean flag = true;
                if (list.contains("cat") && list.contains("fish") || list.contains("cat") && list.contains("dog")) {
                        flag = false;
                }
                return flag;
        }

        public boolean isEmpty(ArrayList<String> list) {
                return list.isEmpty();
        }

        public void toTake() {
                String animal = startList.get(0);
                startList.remove(0);
                if (isSafe(startList)) {
                        toThere(animal);
                } else {
                        startList.add(animal);
                        toTake();
                }
        }

        public void toThere(String animal) {
                endList.add(animal);
                System.out.println("农夫带着"+animal+"过河了");
                System.out.println("河这边还有"+startList);
                System.out.println("过河了的有"+endList);
                if(isEmpty(startList)){
                        System.out.println("动物都过河了");
                        return;
                }
               
                if(isSafe(endList)){
                       
                        toTake();
                }else{
               
                        String s=endList.get(0);
                        endList.remove(0);
                        if(isSafe(endList)){
                                System.out.println("农夫带着"+s+"回到了这边");
                                startList.add(s);
                                toTake();
                        }else{
                                toThere(s);
                        }
                }               
        }
}



作者: 田策    时间: 2015-10-16 21:26
很好,很实用!!!
作者: 迷途老马    时间: 2015-10-17 00:03
直接拿走用了。哈哈谢谢
作者: jyf823691221    时间: 2015-10-17 00:06
直接拿走用了。哈哈谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2