導航:首頁 > 編程語言 > java邏輯試題

java邏輯試題

發布時間:2023-06-29 05:23:05

java編程的邏輯題,大神幫下!謝謝

方法一:
import java.util.ArrayList;
import java.util.List;

public class test10 {

// 解題思路:先帶走貓,後帶走狗,再把貓帶回,把魚帶過去,最後再把貓帶過去即可

// 定義兩個集合,存放,帶過去的動物,和剩下的動物
static List<String> there = new ArrayList<String>();
static List<String> here = new ArrayList<String>();

public static void main(String[] args) {
here.add("cat");
here.add("dog");
here.add("fish");

test10 test10 = new test10();
test10.take();
}

// 判斷動物是否安全
public boolean isSafty(List<String> list) {
// 如果一個集合中同時出現了貓和狗,貓和魚的都認為不安全
if (list.add("dog") && list.add("cat") || list.add("cat")
&& list.add("fish")) {
return false;
}
return true;
}

public void take() {
// 得到要帶走的動物
String anim = here.get(0);
// 從剩下的集合中刪除
here.remove(here.get(0));

if (anim.equals("cat")) {

// 添加到以帶過去的集合裡面
there.add(anim);

// 繼續帶下一個動物
if (here.isEmpty()) {
System.out.println();
System.out.println("最後在把" + anim + "帶走了");
return;
} else {
System.out.println("帶走了" + anim);
System.out.print("剩下:");
for (String s : here) {
System.out.print(s + " ");
}
System.out.println();
System.out.println("----------------------------");
take();
}

} else if (anim.equals("dog")) {
there.add(anim);
System.out.println("然後把" + anim + "帶走");
// 判斷是否安全,之後繼續帶下一個動物
if (isSafty(there)) {
take();
} else {
String animal = there.get(0);
there.remove(animal);
here.add(animal);
System.out.println("然後把" + animal + "帶回");
// 繼續帶下一個動物
take();
}
} else if (anim.equals("fish")) {
System.out.print("之後把" + anim + "帶走");

take();
}
}
}

方法二:
import java.util.ArrayList;
import java.util.Random;

/*
* 需求:
* 一位老農帶著貓、狗、魚過河,河邊有一條船,每次老農只能帶一隻動物過河。
* 當老農不和貓狗魚在一起時,狗會咬貓,貓會吃魚,當老農和貓狗魚在一起時,則不會發生這種問題。
* 編程解決貓狗魚過河問題。
* 分析:
* 定義貓,狗,魚元素.定義兩岸集合.定義方法判斷不和諧狀況.
* 步驟:
* 1.將貓狗魚抽象為三個String型變數.將兩岸抽象為兩個集合.
* 2.定義判斷是否和諧方法.
* */

public class Test10 {
public static void main(String[] args) {
//開始過河.
doTransport();
}

public static void doTransport() {
// 抽象出貓,魚,狗和兩岸.
ArrayList<String> arr1 = new ArrayList<String>();
ArrayList<String> arr2 = new ArrayList<String>();
arr1.add("魚");
arr1.add("貓");
arr1.add("狗");
// 農夫將要攜帶到船上動物.(前一字元表示農夫當前攜帶動物,後一字元表示上次農夫攜帶的動物,為了讓農夫不出現重復拿同一個動物的情況)
System.out.println("農夫,貓,魚,狗都在此岸,開始過河.\n");
String[] boat ={"-","-"};
while (arr1.size() > 0) {
move(arr1, arr2, boat);
}
System.out.println("\n農夫,貓,魚,狗都到達彼岸.");
}

public static void move(ArrayList<String> arr1, ArrayList<String> arr2,String[] boat) {
//農夫船上是否有動物,有則不需隨機選擇攜帶.
if (boat[0].equals("-")) {
int one=0;
do{
// 農夫從此岸隨機帶上一個動物.
one = new Random().nextInt(arr1.size());
}while(arr1.get(one).equals(boat[1]));
boat[1]=boat[0];
boat[0] = arr1.get(one);
arr1.remove(one);
}
// 判斷此岸是否和諧
if (ifNice(arr1)) {
// 此岸和諧,農夫則將動物送去彼岸.
arr2.add(boat[0]);
System.out.println("--->農夫帶" + boat[0] + "去彼岸 ");
//首先判斷是否將三個動物都放彼岸,是則無需判斷是否和諧.
if(arr2.size()==3){
return;
}
// 判斷彼岸是否和諧.
if (ifNice(arr2)) {
// 彼岸和諧,農夫則完成此次運送.
boat[1]=boat[0];
boat[0] ="-";
System.out.println(" 農夫單獨回此岸<---");
} else {
// 彼岸不和諧,農夫則將岸上動物與攜帶動物交換.送回此岸.
boat[0]=arr2.get(0);
System.out.println(" 農夫帶" +boat[0]+ "回此岸<---");
arr2.remove(0);
arr1.add(boat[0]);
boat[1]=boat[0];
boat[0]="-";
}
} else {
// 如果此岸不和諧則放回此岸.
arr1.add(boat[0]);
boat[1]=boat[0];
boat[0]="-";
}
}

public static boolean ifNice(ArrayList<String> arr) {// 判斷是能否共存.
if ((arr.contains("貓") && arr.contains("狗"))
|| (arr.contains("魚") && arr.contains("貓"))) {
return false;
} else {
return true;
}
}
}

閱讀全文

與java邏輯試題相關的資料

熱點內容
安卓手機電話簿怎麼導出到蘋果手機 瀏覽:763
php實現投票 瀏覽:333
手機爆力解壓加密視頻文件 瀏覽:932
東方財富app怎麼看北上資金圖解 瀏覽:418
邢昭林程序員那麼可愛拍現場 瀏覽:169
安卓什麼應用可以免費看電視劇 瀏覽:504
合適pdf 瀏覽:293
app監測睡眠怎麼選擇 瀏覽:642
老人家用什麼安卓手機好 瀏覽:955
解壓包能不能送女朋友 瀏覽:701
好看發卡網源碼 瀏覽:51
水平集演算法matlab 瀏覽:769
區域網如何用ftp伺服器配置 瀏覽:76
程序員慣性思考模式 瀏覽:443
如何在個稅app上查身份證號 瀏覽:7
電視家app安裝在電視上怎麼安 瀏覽:890
怎麼將pdf格式轉化為圖片格式 瀏覽:639
伺服器拔掉raid卡怎麼裝系統 瀏覽:234
區域對稱加密演算法 瀏覽:247
數字轉漢字php 瀏覽:735