下次上課:10/4
我的寫法:
package com.sun.www;
import javax.swing.JOptionPane;
publicclass Psy {
public static void main(String[] args) {
//方法3 輸入的值第一個即預設為第一樓
String[][] quiz = new String[][]{
{"1.經常對雙親採取反抗的態度 (y/n) ?"},
{"2.能沉著地和討厭的人說話 (y/n) ?"},
{"3.不會拒絕別人的請求 (y/n) ?"},
{"4.周圍的人說你生氣時很恐怖 (y/n) ?"},
{"5.曾經認真考慮過要自殺 (y/n) ?"},
{"6.想嘗試如野獸般的sex (y/n) ?", "10", "8"},
{"7.因為個性很衝,所以常常與人發生口角 (y/n) ?", "8", "6"},
{"8.你的內心比外表還要狂野 (y/n) ?", "12", "11"},
{"9.最近的人際關係經常失和 (y/n) ?", "12", "13"},
{"10.能若無其事地說謊 (y/n) ?", "13", "14"},
{"11.經常會累積煩惱 (y/n) ?", "15", "10"},
{"12.對人的喜好很強烈 (y/n) ?", "15", "16"},
{"13.會帶頭說人壞話 (y/n) ?", "17", "14"},
{"14.經常有兩極化的言行 (y/n) ?", "19", "17"},
{"15.認為女性的價值絕對是由容貌來決定 (y/n) ?", "18", "20"},
{"16.會勃然大怒至忘我境界 (y/n) ?", "19", "20"},
{"17.容易得意忘形 (y/n) ?", "18", "21"},
{"18.過去一年都是同一髮型 (y/n) ?", "22", "21"},
{"19.曾情緒性的大聲嘶吼 (y/n) ?", "23", "22"},
{"20.不太會和沒利害關係的人來往 (y/n) ?", "24", "19"},
{"21.很容易讓人對你發牢騷 (y/n) ?", "25", "22"},
{"22.很會向年長的異性撒嬌 (y/n) ?", "26", "23"},
{"23.在家裡和在外面的個性截然不同 (y/n) ?", "28", "26"},
{"24.經常讓人說是慢郎中 (y/n) ?", "28", "27"},
{"25.會裝開心果逗大家開心 (y/n) ?", "29", "30"}, //A, B
{"26.曾讓自己比外表看起來更美麗 (y/n) ?", "30", "31"}, //B, C
{"27.在任何場所都能感動流淚 (y/n) ?", "32", "26"}, //D
{"28.脾氣相當彆扭 (y/n) ?", "32", "33"}, //D, E
{"A類型 追求自然的誠實派\n\n你最討厭掩飾,覺得誠實最好,當然雙重人格程\n度也最低。可是這並不表示你只會說真話,有時\n你也懂得某些狀況要裝傻。你在人際關係上有裝\n乖寶寶的強烈傾向,就連和真正討厭的人相處也\n能和喜歡的朋友般沒差別,不過這點恐怕會惹人\n嫌,被認為「表裡不一」或「裝好人」。","",""},
{"B類型 非得說真話的頑固者\n\n你的個性是只說真心話,完全不在乎發言會激怒\n周遭或造成恐慌,只要能表達意見就會感到滿足\n。粗線條的你雖沒發覺,但周遭已把你列入「不\n受歡迎」的黑名單。你多半不是為了傷人才惡言\n相向,但完全無惡意反而才更難處理;說話不思考\n會被孤立唷,不過你也許一輩子都不會發現。","",""},
{"C類型 不停變換假面具的牆頭草\n\n與其說是雙重人格不如說你八面玲瓏。你會因人\n改變態度,有著見人說人話及欺弱扶強的狡猾之\n處。你對待有利用價值的人會和藹可親,反之則\n冷酷無情,是周圍常見的牆頭草的類型。曾在合\n適時機適當發言是特徵之一,或許會被人批評「\n沒原則」,偶爾要貫徹自己想法以免失去信賴。","",""},
{"D類型 標準的雙重人格\n\n你是道地的雙重人格。雖平常愛流淚、會照顧人\n,有耐心傾聽周圍煩惱,但一激動起來會張惶失\n措至連旁人都無法處理的地步,出現令人無法置\n信的大轉變。不過因為你自己有自覺,所以還不\n算是病態!平常很老實,可是偶而也會做出想不到\n的大膽行為,總之轉變極端是你的特徵。","",""},
{"E類型 靈活運用的處世能手\n\n你是處世的能手,有能力與人相處愉快,雙重人\n格度屬一般水平。除非必要否則不與人爭執,常\n保持中立立場,一切有分寸,但並非是沈默老實\n,而是瞭解樹大招風的道理。即使朋友興致勃勃\n說某人壞話也絕不加入,但這不表示袒護對方。\n如果是女性,這樣的態度會被同性誤認為「狡猾\n」。","",""}
//接下來要自己寫囉!
};
JOptionPane.showMessageDialog(null, "歡迎來玩心理測驗!"); //開始畫面
int answer = JOptionPane.showConfirmDialog(null, quiz[0] , "心理測驗", JOptionPane.YES_NO_OPTION); //第一題開始
System.out.println(answer); //偷看答案 是=0 否=1
if (answer==0){ //如果回傳值為"是(0)"則執行第2題
int answer1 = JOptionPane.showConfirmDialog(null, quiz[1] , "心理測驗", JOptionPane.YES_NO_OPTION);
}else{ //否則執行第五題
int answer1 = JOptionPane.showConfirmDialog(null, quiz[4] , "心理測驗", JOptionPane.YES_NO_OPTION);
};
if(answer==0){
JOptionPane.showConfirmDialog(null, quiz[2] , "心理測驗", JOptionPane.YES_NO_OPTION);
}if(answer==1){
JOptionPane.showConfirmDialog(null, quiz[4] , "心理測驗", JOptionPane.YES_NO_OPTION);
};
if(answer==0){
JOptionPane.showConfirmDialog(null, quiz[3] , "心理測驗", JOptionPane.YES_NO_OPTION);
}if (answer==1){
JOptionPane.showConfirmDialog(null, quiz[5] , "心理測驗", JOptionPane.YES_NO_OPTION);
}
if(answer==0){
JOptionPane.showConfirmDialog(null, quiz[7] , "心理測驗", JOptionPane.YES_NO_OPTION);
}else{
JOptionPane.showConfirmDialog(null, quiz[6] , "心理測驗", JOptionPane.YES_NO_OPTION);
}
if(answer==0){
JOptionPane.showConfirmDialog(null, quiz[8] , "心理測驗", JOptionPane.YES_NO_OPTION);
}else{
JOptionPane.showConfirmDialog(null, quiz[9] , "心理測驗", JOptionPane.YES_NO_OPTION);
}
}
}
老師答案:
import javax.swing.*;
public class MentalQuiz {
public static void main(String[] args) {
String[][] quiz = { {"1.經常對雙親採取反抗的態度 (y/n) ?", "2", "5"},
{"2.能沉著地和討厭的人說話 (y/n) ?", "3", "5"},
{"3.不會拒絕別人的請求 (y/n) ?", "4", "6"},
{"4.周圍的人說你生氣時很恐怖 (y/n) ?", "8", "7"},
{"5.曾經認真考慮過要自殺 (y/n) ?", "9", "10"},
{"6.想嘗試如野獸般的sex (y/n) ?", "10", "8"},
{"7.因為個性很衝,所以常常與人發生口角 (y/n) ?", "8", "6"},
{"8.你的內心比外表還要狂野 (y/n) ?", "12", "11"},
{"9.最近的人際關係經常失和 (y/n) ?", "12", "13"},
{"10.能若無其事地說謊 (y/n) ?", "13", "14"},
{"11.經常會累積煩惱 (y/n) ?", "15", "10"},
{"12.對人的喜好很強烈 (y/n) ?", "15", "16"},
{"13.會帶頭說人壞話 (y/n) ?", "17", "14"},
{"14.經常有兩極化的言行 (y/n) ?", "19", "17"},
{"15.認為女性的價值絕對是由容貌來決定 (y/n) ?", "18", "20"},
{"16.會勃然大怒至忘我境界 (y/n) ?", "19", "20"},
{"17.容易得意忘形 (y/n) ?", "18", "21"},
{"18.過去一年都是同一髮型 (y/n) ?", "22", "21"},
{"19.曾情緒性的大聲嘶吼 (y/n) ?", "23", "22"},
{"20.不太會和沒利害關係的人來往 (y/n) ?", "24", "19"},
{"21.很容易讓人對你發牢騷 (y/n) ?", "25", "22"},
{"22.很會向年長的異性撒嬌 (y/n) ?", "26", "23"},
{"23.在家裡和在外面的個性截然不同 (y/n) ?", "28", "26"},
{"24.經常讓人說是慢郎中 (y/n) ?", "28", "27"},
{"25.會裝開心果逗大家開心 (y/n) ?", "29", "30"}, //A, B
{"26.曾讓自己比外表看起來更美麗 (y/n) ?", "30", "31"}, //B, C
{"27.在任何場所都能感動流淚 (y/n) ?", "32", "26"}, //D
{"28.脾氣相當彆扭 (y/n) ?", "32", "33"}, //D, E
{"A類型 追求自然的誠實派\n\n你最討厭掩飾,覺得誠實最好,當然雙重人格程\n度也最低。可是這並不表示你只會說真話,有時\n你也懂得某些狀況要裝傻。你在人際關係上有裝\n乖寶寶的強烈傾向,就連和真正討厭的人相處也\n能和喜歡的朋友般沒差別,不過這點恐怕會惹人\n嫌,被認為「表裡不一」或「裝好人」。","",""},
{"B類型 非得說真話的頑固者\n\n你的個性是只說真心話,完全不在乎發言會激怒\n周遭或造成恐慌,只要能表達意見就會感到滿足\n。粗線條的你雖沒發覺,但周遭已把你列入「不\n受歡迎」的黑名單。你多半不是為了傷人才惡言\n相向,但完全無惡意反而才更難處理;說話不思考\n會被孤立唷,不過你也許一輩子都不會發現。","",""},
{"C類型 不停變換假面具的牆頭草\n\n與其說是雙重人格不如說你八面玲瓏。你會因人\n改變態度,有著見人說人話及欺弱扶強的狡猾之\n處。你對待有利用價值的人會和藹可親,反之則\n冷酷無情,是周圍常見的牆頭草的類型。曾在合\n適時機適當發言是特徵之一,或許會被人批評「\n沒原則」,偶爾要貫徹自己想法以免失去信賴。","",""},
{"D類型 標準的雙重人格\n\n你是道地的雙重人格。雖平常愛流淚、會照顧人\n,有耐心傾聽周圍煩惱,但一激動起來會張惶失\n措至連旁人都無法處理的地步,出現令人無法置\n信的大轉變。不過因為你自己有自覺,所以還不\n算是病態!平常很老實,可是偶而也會做出想不到\n的大膽行為,總之轉變極端是你的特徵。","",""},
{"E類型 靈活運用的處世能手\n\n你是處世的能手,有能力與人相處愉快,雙重人\n格度屬一般水平。除非必要否則不與人爭執,常\n保持中立立場,一切有分寸,但並非是沈默老實\n,而是瞭解樹大招風的道理。即使朋友興致勃勃\n說某人壞話也絕不加入,但這不表示袒護對方。\n如果是女性,這樣的態度會被同性誤認為「狡猾\n」。","",""}
};
int 題號 = 1;
do {
int 使用者選擇 = JOptionPane.showConfirmDialog(null, quiz[題號-1][0]);
// if (使用者選擇 == JOptionPane.YES_OPTION) { // 如果使用者按「是」
// 題號 = Integer.parseInt(quiz[題號-1][1]); // 從quiz陣列裡取出使用者回答是的下一題題號
// } else if (使用者選擇 == JOptionPane.NO_OPTION) { // 如果使用者按「否」
// 題號 = Integer.parseInt(quiz[題號-1][2]); // 從quiz陣列裡取出使用者回答否的下一題題號
// } else if (使用者選擇 == JOptionPane.CANCEL_OPTION || 使用者選擇 == JOptionPane.CLOSED_OPTION) { // 如果使用者按「取消」或「關閉」
// System.exit(0); // 立即結束Java應用程式
// }
switch(使用者選擇) { // switch 指令在課本7-28頁, 266頁
case JOptionPane.YES_OPTION: // 如果使用者按「是」 (如果「使用者選擇」變數內容與YES_OPTION變數內容相同)
題號 = Integer.parseInt(quiz[題號-1][1]); // 從quiz陣列裡取出使用者回答是的下一題題號
break; // 中止執行switch區塊
case JOptionPane.NO_OPTION: // 如果使用者按「否」 (如果「使用者選擇」變數內容與NO_OPTION變數內容相同)
題號 = Integer.parseInt(quiz[題號-1][2]); // 從quiz陣列裡取出使用者回答否的下一題題號
break; // 中止執行switch區塊
case JOptionPane.CANCEL_OPTION: // 如果使用者按「取消」
case JOptionPane.CLOSED_OPTION: // 如果使用者按「關閉」
System.exit(0); // 立即結束Java應用程式
}
} while (題號 <= 28);
JOptionPane.showMessageDialog(null, quiz[題號-1][0]);
}
}