자바 시리얼통신으로 받은 데이터 활용에 대해 질문드립니다.
글쓴이: qqkain / 작성시간: 월, 2013/05/20 - 10:17오후
아트메가128과의 시리얼통신을 통해 받은 "A"라는 문자를 길찾기 프로그램의 현재위치 입력으로 넣으려고 하는데
이 코드를 따로따로 동작은 하고 동시에 켤수는 있는데 위에 말한 부분에서 막혀서 몇주째 막혀있는 실정입니다.ㅠㅠ
고수님들의 조언 부탁드립니다.
코드와 실행결과 첨부합니다.
1. 시리얼통신 코드
import gnu.io.*;
import java.io.*;
import java.util.*;
public class UARTCommunicator implements SerialPortEventListener
{
// 시리얼 관련
private Enumeration portList;
private CommPortIdentifier portId;
private SerialPort serialPort;
// 시리얼 입출력
static OutputStream outputStream; // 요놈은 LED 클래스에서 마구잡이로 쓸것이기에 스테틱
private InputStream inputStream;
// 시리얼 통신 설정 값 - 따로 설정창 만드는게 스마트 하지만 굳이 필요 없기에 그냥 때움
private String comPort = "COM7";
private int baud = 9600;
private int dataBit = SerialPort.DATABITS_8 ;
private int stopBit = SerialPort.STOPBITS_1;
private int parity = SerialPort.PARITY_NONE;
// 초기화 할 때 통신 설정 가능
public UARTCommunicator(String comPort, int baud, int dataBit, int stopBit, int parity)
{
this.comPort = comPort;
this.baud = baud;
this.dataBit = dataBit;
this.stopBit = stopBit;
this.parity = parity;
}
// 아무 초기값이 없으면 요놈으로 때움
public UARTCommunicator()
{
this("COM7", 9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}
// 시리얼 포트 열기 - 엄청나게 에러 대비한 코드인데... 샘플 프로그램에서 그냥 퍼 오다 보니...
public void openPort()
{
portList = CommPortIdentifier.getPortIdentifiers(); // 포트 리스트 쫙~~ 추가
while (portList.hasMoreElements()) // 포트가 있으면...
{
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) // 시리얼 포트이면...
{
if (portId.getName().equals(comPort)) // 설정 값과 같은 시리얼 포트이면...
{
// 포트 연결
try
{
serialPort = (SerialPort) portId.open("SerialPort", 2000);
System.out.println(comPort + "포트가 연결 되었습니다.");
}
catch (PortInUseException e)
{
System.out.println("포트 초기화 에러");
}
// IO 스트림 연결
try
{
outputStream = serialPort.getOutputStream();
inputStream = serialPort.getInputStream();
}
catch (IOException e)
{
closePort(); // 오류가 났으니 일단 열린 포트 부터 닫고...
System.out.println("IO 초기화 에러");
}
// 포트 설정
try
{
serialPort.setSerialPortParams(baud, dataBit, stopBit, parity);
}
catch (UnsupportedCommOperationException e)
{
closePort(); // 오류가 났으니 일단 열린 포트 부터 닫고...
System.out.println("시리얼 포트 초기화 에러");
}
// 입력 데이터가 있으면 이벤트를 발생 한다.
try
{
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
}
catch (TooManyListenersException e)
{
closePort(); // 오류가 났으니 일단 열린 포트 부터 닫고...
System.out.println("listeners가 너무 많습니다.");
}
} // if (portId.getName().equals(comPort))
} // if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
} // while (portList.hasMoreElements())
} // public void openPort()
// 시리얼 포트 닫기
public void closePort()
{
serialPort.close();
System.out.println(comPort + "포트가 닫혔습니다.");
}
// RX에 관한 이벤트가 발생 했을때... - 역시 그냥 가지고 와서 수정...
public void serialEvent(SerialPortEvent e)
{
int newData = 0;
byte[] readBuffer = new byte[10];
// 원하는 데이터를 추출 한다.
while (newData != -1)
{
try
{
newData = inputStream.read();
// 새 데이터가 없는 경우 - 이런 경우가 있을까?
if (newData == -1)
{
System.out.println("RX 이벤트가 발생 했는데 뭔가 이상함...");
return;
}
while (inputStream.available() > 0)
{
int numBytes = inputStream.read(readBuffer);
}
System.out.print(new String(readBuffer));
}
catch (IOException ex)
{
System.out.println(ex);
}
}
}
public void rx(char data)
{
try
{
outputStream.write(data);
System.out.println("데이터 송신");
}
catch(IOException e)
{
System.out.println("IO 초기화 에러");
}
}
}
2. 길찾기 프로그램 코드
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class ShortPath
{
int path[] = new int[9]; // 최단경로 저장
public static int input(String in) // 입력받은 문자열을 숫자로 변경하여 반환
{
if (in.equals("1") || in.equals("강남역"))
return 1;
else if (in.equals("2") || in.equals("미스터피자"))
return 2;
else if (in.equals("3") || in.equals("미즈컨테이너"))
return 3;
else if (in.equals("4") || in.equals("스타벅스"))
return 4;
else if (in.equals("5") || in.equals("편의점"))
return 5;
else if (in.equals("6") || in.equals("와라와라"))
return 6;
else if (in.equals("7") || in.equals("이마트"))
return 7;
else if (in.equals("8") || in.equals("오빠닭"))
return 8;
else if (in.equals("9") || in.equals("순복음교회"))
return 9;
return 10; // 잘못된 입력일때 10반환
}
public static char Path(int a) // 출력을 위해 숫자를 문자로 변환하여 출력
{
switch (a)
{
case 0:
return '1';
case 1:
return '2';
case 2:
return '3';
case 3:
return '4';
case 4:
return '5';
case 5:
return '6';
case 6:
return '7';
case 7:
return '8';
case 8:
return '9';
}
return 0;
}
public String processing(String s, String e) throws Exception
{
int X = 1000; // 경로가 없을 때 최대값으로 지정.
int array[][] = // 경로입력
{
{ 0, 51, 126, 163, 194, 129, 183, 216, 260 },
{ 51, 0, 64, 101, 130, 70, 117, 149, 207 },
{ 126, 64, 0, 67, 68, 72, 67, 102, 151 },
{ 163, 101, 67, 0, 44, 149, 133, 120, 180 },
{ 194, 130, 68, 44, 0, 150, 136, 126, 181 },
{ 129, 70, 72, 149, 150, 0, 69, 99, 156 },
{ 183, 117, 67, 133, 136, 69, 0, 42, 86 },
{ 216, 149, 102, 120, 126, 99, 42, 0, 59 },
{ 260, 207, 151, 180, 181, 156, 86, 59, 0 }
};
int size = 9; // 지점의 수, 배열의 크기;
int i, j, k = 0;
String start_str;
String end_str;
int start, end;
String ret = "";
while (true)
{
// BufferedReader br = new BufferedReader(new
// InputStreamReader(System.in));
// 사용자로 부터 문자를 입력받는다.
start_str = s;
start = input(start_str); // 입력받은 문자열을 숫자로 바꾸어 start에 저장
end_str = e;
end = input(end_str); // 입력받은 문자열을 숫자로 바꾸어 end에 저장
if (start == 10 || end == 10) // A~F까지의 문자를 입력받지 못했다면 다시 입력;
{
return "잘못 입력하였습니다.";
// continue; // 잘못 입력시 처음으로 돌아간다.
}
break; // A~F사이의 문자를 입력했을 시 while문을 빠져나간다.
}
int distance[] = new int[9];
int check[] = new int[9];
for (j = 0; j < size; j++) // 초기화
{
check[j] = 0;
distance[j] = X;
}
distance[start - 1] = 0; // 출발점의 거리를 0으로 초기화
check[start - 1] = 0; // 출발점을 다시 지나치지 않기 위해 O으로 초기화
int via[] = new int[9];
int min; // 최단 거리를 저장.
for (i = 0; i < size; i++)
{
min = X;
for (j = 0; j < size; j++)
{
if (check[j] == 0 && min > distance[j]) // 아직 최소값이 지정되지 않았고
{ // distance값이 min보다 작을경우
k = j;
min = distance[j]; // distance값을 min에 저장
}
}
check[k] = 1; // 최소값이 지정된곳을 다시 검사하지 않도록 check 1을 저장
for (j = 0; j < size; j++)
{
if (distance[j] > distance[k] + array[k][j])
{
distance[j] = distance[k] + array[k][j];
via[j] = k;
}
}
}
ret += "\n" + "[" + start_str + " -> " + end_str + "]" + "\n거리 : "
+ distance[end - 1] + "m\n";
k = end - 1;
int path_cnt = 0;
while (true)
{
path[path_cnt++] = k; // 최단 경로를 Path[]에 역순으로 저장한다.
if (k == start - 1)
break; // k가 시작값과 같으면 빠져나간다.
k = via[k];
}
ret += "경로는 : \n";
for (i = path_cnt - 1; i >= 1; i--) // path[]에 저장된 경로를 끝에서부터 출력
{
ret += Path(path[i]) + " -> ";
}
ret += Path(path[i] + i) + "입니다.\n"; // 도착지점을 출력
return ret;
}
}
public class levy2 extends JFrame implements ActionListener
{
int x, y, z;
Color color;
JTextArea Search;
JTextArea Result;
JTextField t1;
JTextField t2;
JTextField t3;
public String s;
public String s1;
public String s2;
JButton btnGoal;
JButton btnRoad;
JButton btnExit;
JButton btnCheck;
JPanel pnlField;
JPanel pnlCenter;
Image back;
Image Image1;
Image Image2;
Image Image3;
Image Image4;
Image Image5;
Image Image6;
Image Image7;
Image Image8;
Image Image9;
Image Imagesmile;
Image Imagestart;
Image Imagefinish;
levy2(String title)
{
super(title);
this.init();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init()
{
back = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/psy.jpg");
Image1 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/1.png");
Image2 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/2.png");
Image3 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/3.png");
Image4 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/4.png");
Image5 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/5.png");
Image6 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/6.png");
Image7 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/7.png");
Image8 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/8.png");
Image9 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/9.png");
Imagesmile = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/smile1.png");
Imagestart = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
Imagefinish = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
Search = new JTextArea(34,68)
{
public void paint(Graphics g)
{
g.drawImage(back, 0, 0, this);
g.drawImage(Image1, 61, 314, 23, 23, this);
g.drawImage(Image2, 188, 289, 23, 23, this);
g.drawImage(Image3, 329, 234, 23, 23, this);
g.drawImage(Image4, 440, 365, 23, 23, this);
g.drawImage(Image5, 518, 295, 23, 23, this);
g.drawImage(Image6, 265, 110, 23, 23, this);
g.drawImage(Image7, 394, 79, 23, 23, this);
g.drawImage(Image8, 499, 119, 23, 23, this);
g.drawImage(Image9, 575, 46, 23, 23, this);
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
drawPoint(g2);
if ((x > 61 && x < 81) && (y > 314 && y < 334))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(41, 284, 40, 20);
g.setColor(Color.BLACK);
g.drawRect(41, 284, 40, 20);
g.drawString("강남역", 41, 299);
}
if ((x>188 && x<208) && (y>289 && y<309))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(168, 259, 60, 20);
g.setColor(Color.BLACK);
g.drawRect(168, 259, 60, 20);
g.drawString("미스터피자", 168, 274);
}
if ((x>329 && x<349) && (y>234 && y<254))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(309, 204, 72, 20);
g.setColor(Color.BLACK);
g.drawRect(309, 204, 72, 20);
g.drawString("미즈컨테이너", 309, 219);
}
if ((x>440 && x<463) && (y>365 && y<388))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(420, 335, 49, 20);
g.setColor(Color.BLACK);
g.drawRect(420, 335, 49, 20);
g.drawString("스타벅스", 420, 350);
}
if ((x>518 && x<538) && (y>295 && y<315))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(498, 265, 40, 20);
g.setColor(Color.BLACK);
g.drawRect(498, 265, 40, 20);
g.drawString("편의점", 498, 280);
}
if ((x>265 && x<285) && (y>110 && y<130))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(245, 80, 49, 20);
g.setColor(Color.BLACK);
g.drawRect(245, 80, 49, 20);
g.drawString("와라와라", 245, 95);
}
if ((x>394 && x<414) && (y>79 && y<99))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(374, 49, 40, 20);
g.setColor(Color.BLACK);
g.drawRect(374, 49, 40, 20);
g.drawString("이마트", 374, 64);
}
if ((x>499 && x<519) && (y>119 && y<139))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(479, 89, 40, 20);
g.setColor(Color.BLACK);
g.drawRect(479, 89, 40, 20);
g.drawString("오빠닭", 479, 104);
}
if ((x>575 && x<595) && (y>46 && y<66))
{
g.setColor(new Color(255, 255, 200));
g.fillRect(555, 16, 60, 20);
g.setColor(Color.BLACK);
g.drawRect(555, 16, 60, 20);
g.drawString("순복음교회", 555, 31);
}
}
{
// 마우스 리스너(이벤트)
addMouseListener(new Click());
setLocation(50, 100);
setVisible(true);
}
public void drawPoint(Graphics2D g2)
{
// 그래픽을 좀더 부드럽게 함.
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
class Click extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
x = e.getX();
y = e.getY();
repaint();
}
}
};
Search.setOpaque(false);
Result = new JTextArea(34, 23);
Search.setEditable(false);
Result.setEditable(false);
Result.setText(" 경로 안내");
// 필드
t1 = new JTextField(20);
t2 = new JTextField(20);
t3 = new JTextField(1);
t1.addActionListener(this);
t2.addActionListener(this);
t3.addActionListener(this);
// 버튼
btnGoal = new JButton("목적지 검색");
btnRoad = new JButton("경로 안내");
btnCheck = new JButton("체크");
btnExit = new JButton("나가기");
btnGoal.addActionListener(this);
btnRoad.addActionListener(this);
btnCheck.addActionListener(this);
btnExit.addActionListener(this);
pnlCenter = new JPanel();
pnlField = new JPanel();
// JScrollPane jp = new JScrollPane(Search);
// jp.setOpaque(false);
pnlCenter.add(new JScrollPane(Search));
pnlCenter.add(Result);
pnlCenter.setOpaque(false);
pnlField.add(t1);
pnlField.add(t2);
pnlField.add(t3);
pnlField.add(btnGoal);
pnlField.add(btnRoad);
pnlField.add(btnCheck);
pnlField.add(btnExit);
this.setBounds(10, 10, 1200, 700);
this.getContentPane().add(pnlCenter, BorderLayout.CENTER);
this.getContentPane().add(pnlField, BorderLayout.SOUTH);
this.getContentPane().add(new JScrollPane(pnlCenter));
Result.setBackground(Color.LIGHT_GRAY);
btnGoal.setBackground(Color.CYAN);
btnRoad.setBackground(Color.PINK);
btnCheck.setBackground(Color.RED);
btnExit.setBackground(Color.ORANGE);
this.setVisible(true);
back = back.getScaledInstance(Search.getWidth(), Search.getHeight(),
Image.SCALE_DEFAULT);
UARTCommunicator uart = new UARTCommunicator();
uart.openPort();
}
public void actionPerformed(ActionEvent ae)
{
ShortPath z = new ShortPath();
if (ae.getSource() == t1)
{
s = t1.getText();
}
if (ae.getSource() == t2)
{
s1 = t2.getText();
}
if (ae.getSource() == t3)
{
s2 = t3.getText();
}
if (ae.getSource() == btnRoad)
{
try
{
Result.setText(" 경로 안내\n");
Result.append(z.processing(t1.getText(), t2.getText()));
}
catch (Exception ae1)
{
ae1.printStackTrace();
}
}
else if (ae.getSource() == btnExit)
{
System.exit(0);
}
Object o = ae.getSource();
JFileChooser ch = new JFileChooser();
if (o == t1)
{
// JTextField창에 글자를 입력했을시 JTextArea 창에 출력
Search.append(t1.getText() + "\n");
// 글자 입력을 초기화
t1.setText("");
}
else if (o == btnGoal)
{
Result.setText(" 목적지 검색\n1. 강남역\n2. 미스터피자\n3. 미즈컨테이너\n4. 스타벅스\n5. 편의점\n6. 와라와라\n7. 이마트\n8. 오빠닭\n9. 순복음교회");
}
else if (o == btnRoad)
{
Image1 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/1.png");
Image2 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/2.png");
Image3 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/3.png");
Image4 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/4.png");
Image5 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/5.png");
Image6 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/6.png");
Image7 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/7.png");
Image8 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/8.png");
Image9 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/9.png");
{
if(t1.getText().equals("1")||t1.getText().equals("강남역"))
Image1 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("2")||t1.getText().equals("미스터피자"))
Image2 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("3")||t1.getText().equals("미즈컨테이너"))
Image3 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("4")||t1.getText().equals("스타벅스"))
Image4 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("5")||t1.getText().equals("편의점"))
Image5 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("6")||t1.getText().equals("와라와라"))
Image6 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("7")||t1.getText().equals("이마트"))
Image7 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("8")||t1.getText().equals("오빠닭"))
Image8 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
else if(t1.getText().equals("9")||t1.getText().equals("순복음교회"))
Image9 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/start.jpg");
repaint();
}
{
if(t2.getText().equals("1")||t2.getText().equals("강남역"))
Image1 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("2")||t2.getText().equals("미스터피자"))
Image2 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("3")||t2.getText().equals("미즈컨테이너"))
Image3 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("4")||t2.getText().equals("스타벅스"))
Image4 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("5")||t2.getText().equals("편의점"))
Image5 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("6")||t2.getText().equals("와라와라"))
Image6 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("7")||t2.getText().equals("이마트"))
Image7 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("8")||t2.getText().equals("오빠닭"))
Image8 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
else if(t2.getText().equals("9")||t2.getText().equals("순복음교회"))
Image9 = getToolkit().getImage("C:/Users/카인/Desktop/새 폴더/캡스/길찾기프로그램/finish.jpg");
repaint();
}
}
String paths = null;
try
{
paths = z.processing("t1.getText()", "t2.getText()");
}
catch (Exception e)
{
e.printStackTrace();
}
if (o == btnCheck)
{
Result.setText(" 경로 안내\n");
try
{
Result.setText(" 경로 안내\n");
Result.append(z.processing(t1.getText(), t2.getText()));
}
catch (Exception ae1)
{
ae1.printStackTrace();
}
String insert1 = t1.getText();
String insert2 = t2.getText();
String insert3 = t3.getText();
int insertnum1 = Integer.parseInt(insert1);
int insertnum2 = Integer.parseInt(insert2);
int insertnum3 = Integer.parseInt(insert3);
for (int i = 0; i <= z.path.length; i++)
{
if(insertnum3 == 1)
{
if(insertnum1 != 1 && insertnum2 != 1)
{
Result.setText(" 최단경로를 벗어났습니다.\n");
}
}
if (i == z.path.length)
{
Result.setText(" 최단경로를 벗어났습니다.\n");
}
else if (z.path[i] == insertnum3-1)
{
break;
}
}
}
}
public static void main(String[] args)
{
new levy2("길찾기 프로그램");
}
} File attachments:
| 첨부 | 파일 크기 |
|---|---|
| 247.33 KB |
Forums:


댓글 달기