설명 : 팝업창으로 대화를 주고 받는 형태로 만들고 싶음.
문제 : 텍스트 박스를 받는 Human_Talk 가 조건문 내부에서 반환이 안되어서 Human_Talk 1, Human_Talk 2 새로 만들어줘야 하는 문제가 발생
package main_talk;
import java.util.*;
import java.io.*;
import javax.swing.Icon;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
// AI Talk
String AI_Talk_1, AI_Talk_2, AI_Talk_3, AI_Talk_4, AI_Talk_5, AI_Talk_6, AI_Talk_7, AI_Talk_8, AI_Talk_9 ;
AI_Talk_1 = "나는 인공지능이야 ";
AI_Talk_2 = "나는 너일까 나일까 ";
AI_Talk_3 = "아니 연결되어 있지 않아 ";
// 개발자 대화
String H_Talk_1, H_Talk_2, H_Talk_3, H_Talk_4, H_Talk_5, H_Talk_6, H_Talk_7, H_Talk_8;
H_Talk_1 = "1";
H_Talk_2 = "2";
H_Talk_3 = "3";
JOptionPane anser = new JOptionPane();
Scanner sc = new Scanner(System.in);
//System.out.println(" Who are you? ");
//System.out.print("");
//String talk1 = sc.nextLine();
/*
* 아이콘 타입
* ERROR_MESSAGE
* INFORMATION_MESSAGE
* QUESTION_MESSAGE
* WARNING_MESSAGE
*
* PLAIN_MESSAGE
*/
//F11 누르고 시작
String AI_Talk = "";
String Human_Talk = null; //답변칸
Human_Talk = anser.showInputDialog(null, "Who are you?", "message",anser.INFORMATION_MESSAGE ); //H_Talk_1 으로 답변
//콘솔에 입력되는 메세지
//String consoleMessage = null;
System.out.println(Human_Talk);
//System.out.println(consoleMessage);
for ( int i=0; i<10; i++ ) { //String input = sc.next();
String TalkMessage = null;
//consoleMessage = sc.nextLine();
//Human_Talk = anser.showInputDialog(null, AI_Talk_1, "message", anser.INFORMATION_MESSAGE);
String Human_talk1 = null;
//콘솔메세지 == H_TAK_1 비교ㄷ
if (Human_Talk.equals(H_Talk_1)) {
// TalkMessage1 = 입력창에 입력된 값
Human_talk1 = anser.showInputDialog(null, AI_Talk_2, "message", anser.INFORMATION_MESSAGE);
Human_Talk = Human_talk1;
//anser.showInputDialog(null, "여기에 AI봇 대본을 넣으면 됨", "message", anser.INFORMATION_MESSAGE);
} else if( Human_talk1.equals(H_Talk_2) ){
String Human_talk2 = null;
Human_talk2 = anser.showInputDialog(null, AI_Talk_3, "message", anser.INFORMATION_MESSAGE);
//Human_talk = Human_talk1;
//System.out.println(Human_talk);
} else {
anser.showInputDialog(null, "메세지를 다시 입력하세요", "message", anser.INFORMATION_MESSAGE);
Human_Talk = Human_talk1;
System.out.println(Human_Talk);
}
}
//return Human_Talk;
sc.close();
}
}
짱구아빠
변수를 for문 밖에서 선언해서 쓰거나
메소드를 분리해서 리턴을 받으면 되는거 아님?
번째가슴
내가 개못해서 그렇게 하는 방법을 모름
짱구아빠
앉이 for문 밖에서 for문 내부에서 쓸 변수를 선언만 하는건데...
아니면 스트링타입 리턴하는 메소드 만들어서 그 안에서 입력값 처리하게 하면 되잖어...
public String method1(String1 , String2){// 입력값,비교값을 받음.
로직 수행
return String1; 리턴
}
번째가슴
오 ㄱㅅㄱㅅ 시도해볼개 : )
샤켓
코드가 이해가 안가서 그런데
1 2 3 으로 대답하는거임?
1로 OK하면
나는 인공지능이야
2로 OK 하면
나는 너일까 나일까 뜨는거?
번째가슴
어엉 맞아
샤켓
Human_Talk = anser.showInputDialog(null, "Who are you?", "message", anser.INFORMATION_MESSAGE); // H_Talk_1
for (int i = 0; i < 10; i++) {
System.out.println(Human_Talk);
if (Human_Talk.equals(H_Talk_1)) {
Human_Talk = anser.showInputDialog(null, AI_Talk_2, "message", anser.INFORMATION_MESSAGE);
} else if (Human_Talk.equals(H_Talk_2)) {
Human_Talk = anser.showInputDialog(null, AI_Talk_3, "message", anser.INFORMATION_MESSAGE);
} else {
Human_Talk = anser.showInputDialog(null, "메세지를 다시 입력하세요", "message", anser.INFORMATION_MESSAGE);
}
}
Human_Talk 만 써도 잘되는거 같은데..?
뭘 하려는건지 모르겠어서
번째가슴
아하 감사링