8월, 2019의 게시물 표시

[자바기초] 쓰레드와 JPanel을 활용한 몬스터 피하기

thread_monster.zip package com.ljh; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class MonsterGameFrame extends JFrame { // 아바타로 사용할 문자열은 "@", 괴물로 사용할 문자열은 "M", 종료키는 'q', 괴물은 200ms 주기로 움직인다 private JPanel gamePanel = new GamePanel("@", "M", 'q', 200); // 게임 패널, 컨텐트팬으로 사용한다. public MonsterGameFrame() { setTitle("Open Challenge 13"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setContentPane(gamePanel); // GamePanel을 컨텐트팬으로 사용한다. setSize(300,300); setVisible(true); gamePanel.setFocusable(true); gamePanel.requestFocus(); // GamePanel이 키를 입력받을 수 있도록 포커스를 설정한다. } // 게임이 진행되는 패널. 배치관리자를 null로 설정 class GamePanel extends JPanel { private String avatarChar; private String monsterChar; private char quitChar; private long monsterDelay; private JLabel avatar;// 아바타를 위한 레이블 private JLabel monster; // 괴물을 위한 레이블 final int AVATAR_MOVE = 10; // 아바타가 한번에 움직이는...

[자바기초] 쓰레드를 활용한 교차 출력

thread_test.zip ThreadMain package MyTread; public class MyTread { public static void main(String[] args) { Cnt cnt = new Cnt(); new PrintThread(cnt).start(); new UpThread(cnt).start(); } } Cnt package MyTread; public class Cnt { /* * 두 스레드가 공유하는 클래스 */ public final static int MAX = 100; private int cnt = 0; // wait(), notify()를 사용하기 위해서는 synchronized가 적용된 메소드만 가능 // cnt가 30일 때 wait(); public synchronized void doWait() { if (cnt == 30) { try { System.out.println("wait()"); wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } // cnt가 60일 때 notify(); public synchronized void doNotify() { if (cnt == 60) { notify(); System.out.println("notify()"); } } @Override public String toString() { ...

[자바기초] 소켓을 활용한 두개의 컴퓨터로 채팅 기능 구현

socket_test.zip package com.ljh.chat; import java.io.*; import java.net.*; import java.util.*; public class ClientEx { public static void main(String[] args) { BufferedReader in = null; BufferedWriter out = null; Socket socket = null; Scanner scanner = new Scanner(System.in); // 키보드에서 읽을 scanner 객체 생성 try { socket = new Socket("localhost", 9999); // 클라이언트 소켓 생성. 서버와 바로 연결 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 소켓 입력 스트림 out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 소켓 출력 스트림 while (true) { System.out.print("보내기>>"); // 프롬프트 String outputMessage = scanner.nextLine(); // 키보드에서 한 행 읽기 if (outputMessage.equalsIgnoreCase("bye")) { out.write(outputMessage+"\n"); // "bye" 문자열 전송 out.flush(); break; // 사용자가 "bye"를 입력한 경우 서버로 전송 후 연결 종료 } out.write(outputMessage + "\n"); // 키보드에서 읽은 문자열 전...

[자바기초] 스윙을 활용한 로그인 화면

login_swing.zip package com.ljh.layout; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import com.ljh.account.AccountClass; //제목정하기, 전체구조(레이아웃), 컨테이너생성 public class LayoutClass extends JFrame { JTextField jt1; JPasswordField jt2; int logCount = 3; public LayoutClass() { setTitle("로그인화면"); // 프레임의 타이틀 달기 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프레임 윈도우를 닫으면 프로그램 종료 BorderLayout bLayout = new BorderLayout(50, 20); //전체구조 Container c = getContentPane(); c.setLayout(bLayout); //setResizable(false); // 사이즈 조절 막아버림 ㅋㅋ JPanel northPanel = new JPanel(); JPanel centerPanel = new JPanel(); JPanel southP...

[자바기초] ArrayList를 통한 미니 학사관리 시스템

DB 없이 ArrayList로 값을 전달했던 예전을 추억하며.. ㅎ learning_management_system.zip package com.ljh.lms.data; import java.util.ArrayList; import com.ljh.lms.obj.CourseClass; public class CourseDataClass { public ArrayList<CourseClass> courseArrayList=new ArrayList<CourseClass>(); public CourseDataClass(){ courseArrayList.add(new CourseClass("C101", "전산개론", 3)); courseArrayList.add(new CourseClass("C102", "자료구조", 3)); courseArrayList.add(new CourseClass("C103", "데이터베이스", 4)); courseArrayList.add(new CourseClass("C301", "운영체제", 3)); courseArrayList.add(new CourseClass("C302", "컴퓨터구조", 3)); courseArrayList.add(new CourseClass("C303", "이산수학", 4)); courseArrayList.add(new CourseClass("C304", "객체지향언어", 4)); courseArrayList.add(new CourseClass("C501", "인공지능", 3)); courseArrayList.add(new CourseClass("C502",...

[자바기초] JDBC와 JTable을 이용한 미니 BBS 게시판

jdbc_jtable_bbs.zip package com.ljh; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class JTable_dynamic_data extends JFrame { private Container con; private String[] str = {"1번", "2번", "3번", "4번"}; //JTable의 header에 출력되는 문자열 배열 //DefaultTableModel은 JTable의 기본 형태를 제공하는 클래스 //이 클래스의 생성자에는 (header, 행의 갯수); private DefaultTableModel dtm = new DefaultTableModel(str, 5); //설정이 완료된 DefaultTableMode 객체를 JTable의 생성자에게 전달.... private JTable jt = new JTable(dtm); //JScrollPane은 스크롤 기능을 제공하는 클래스... //JScrollPane의 생성자 스크롤 기능을 부여할 객체를 전달... private JScrollPane jsp = new JScrollPane(jt); public JTable_dynamic_data() { super("Test"); con = getContentPane(); con.setLayout(new BorderLayout(5,5)); con.add("Center", jsp); this.setSize(300, 200); this.s...

[자바기초] mySQL 기본문법적용 및 한글인코딩(Driver load, Connection, Statement)

자바<->MySQL 사이에 한글을 입력할때 깨짐현상을 방지하기 위한 인코딩이 필요할때가 있다. 인코딩 메소드를 통해 ISO-8859-1 방식으로 지정하여 한글깨짐을 방지해야 한다. jdbc_db_test.zip ChangeEncoding package com.ljh; import java.io.UnsupportedEncodingException; public class ChangeEncoding { // java => mySQL public static String toLatin(String str){ try{ byte[] b=str.getBytes(); return new String(b, "ISO-8859-1"); }catch(UnsupportedEncodingException uee){ System.out.println("Encoding ERR : " +uee.getMessage()); return null; } } // mySQL => Java public static String toUnicode(String str){ try{ byte[] b=str.getBytes("ISO-8859-1"); return new String(b); }catch(UnsupportedEncodingException uee){ System.out.println("Encoding ERR : " +uee.getMessage()); return null; } } } MainClass package com.ljh; import java.sql.Connection; import java.sql.Drive...

[자바기초] mySQL 사용하기 위한 기본문법(Driver load, Connection, Statement)

첨부파일 다운로드 mySQL Driver 처음 mySQL을 사용하는 사람이라면 반드시 알아야 할 내용들 ㅎㅎ 물론 나중에는 클래스화 해서 합쳐져야할 내용들이지만 처음에 돌아가는 구조를 보기 위해서 하나하나 익혀야 할 내용들이다. (당연히 mySQL에 bbsdb라는 DB가 만들어져 있어야 한다) C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext /개발킷쪽에 추가 C:\Program Files\Java\jre1.8.0_211\lib\ext / 인터넷실행환경에 추가 위에 폴더에 각각 mySQL driver가 설치(복사)가 되어져 있어야 한다. JDBC_Connect01_driver_load package com.ljh; public class JDBC_Connect01_driver_load { public static void main(String[] args) { //mySQL전용 String driver = "com.mysql.jdbc.Driver"; try { Class.forName(driver); System.out.println("드라이버 로드 성공!"); } catch (ClassNotFoundException e) { System.out.println("드라이버 ERR! : " + e.getMessage()); } } } JDBC_Connect02_db_connect package com.ljh; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBC_Connect02_db_connect { public static void main(String[] args) { String driver = "com.mysq...

[자바기초] jxl을 이용하여 자바에서 엑셀파일 읽고,쓰기

첨부파일다운로드 jxl.jar C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext C:\Program Files\Java\jre1.8.0_211\lib\ext ----------------------------------------------------------------------------- 위의 경로로 jxl을 복사하면 될법하지만 웹쪽이 아닌관계로...;; 아래와 같이 해야 jxl을 붙일수 있었다; 이클립스 프로젝트오른쪽클릭->Build path->Configure Build Path ->Libraries텝선택->Add External JARs선택 ->첨부파일 jxl.jar파일 선택 예제 파일을 보면 알수 있겠지만 상대경로이기 때문에 프로젝트폴더명 바로 밑에 data.xls가 존재해야 한다. 메인클래스 package com.ljh; import com.ljh.xls.ExcelMaker; import com.ljh.xls.ExcelReader; import jxl.Workbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; public class MainClass { public MainClass() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub //new ExcelMaker(); new ExcelReader(); } } 엑셀쓰기 package com.ljh.xls; import java.io.File; import java.io.IOException; import jxl.Workbook; import jxl.write.Label; import jxl.wr...

[자바기초] 상속을 통한 추상클래스 구현

첨부파일 다운로드 package com.ljh; import com.ljh.extd.ChildClass; import com.ljh.extd.ParentClass; import com.ljh.impl.InterfaceClass; import com.ljh.impl.TestAbstract; import com.ljh.impl.TestClassAbst; import com.ljh.impl.TestClassImpl; public class MainClass { public MainClass() { } //인터페이스는 "강제적"으로 "필수기능구현"해야 하는 목적으로 만들어짐(다형성) //부수적인것 : 데이터형을 통일시켜 사용할수 있음; public static void main(String[] args) { ParentClass p = new ParentClass(); // p.a = 10; default : 동일 패키지에서 접근가능 // p.b=1; protected 상속된 자식 클래스에서 접근 가능; ChildClass c = new ChildClass(); c.prn(); // InterfaceClass i =new InterfaceClass(); // 인터페이스는 생성자를 보유할수 없기 때문에 단독으로 객채생성 불가능! TestClassImpl tci = new TestClassImpl(); TestClassAbst tca = new TestClassAbst(); //두개 한곳에 몰아넣을예정 / 인터페이스 구현받았기 때문에 interface 배열로 구현 InterfaceClass[] i = new InterfaceClass[2]; i[0] = tci; i[0].prn(); i[1] = tca; i[1].prn(); // i[0].n = 0; //인터페이스로 부터 받은 상수이기 때문에 변경 불가능 // i[1].n = 1; //인터페이스...

[자바기초] GStack과 메소드 활용하여 String, Integer형으로 입출력

package com.ljh.stack; class GStack { // 제네릭 스택 선언. 제네릭 타입 T int tos; Object [] stck; // 스택에 요소를 저장할 공간 배열 public GStack() { tos = 0; stck = new Object [10]; } public void push(T item) { if(tos == 10) // 스택이 꽉 차서 더 이상 요소를 삽입할 수 없음 return; stck[tos] = item; tos++; } @SuppressWarnings("unchecked") public T pop() { if(tos == 0) // 스택이 비어 있어 꺼낼 요소가 없음 return null; tos--; return (T)stck[tos]; // 타입 매개 변수 타입으로 캐스팅 } } class GenericMethodEx { static void toStack(T[] a, GStack gs) { for (int i=0; i stringStack = new GStack (); // String 타입의 GStack 생성 stringStack.push("seoul"); stringStack.push("busan"); stringStack.push("LA"); for(int n=0; n intStack = new GStack (); // Integer 타입의 GStack 생성 intStack.push(1); intStack.push(3); intStack.push(5); for(int n=0; n

[자바기초] HashMap으로 [학생 이름, Student 객체]를 이용하여 저장, 출력

package com.ljh.map; import java.util.HashMap; import java.util.Scanner; class Student { private int id; private String tel; public Student(int id, String tel) { this.id = id; this.tel = tel; } public int getId() { return id; } public String getTel() { return tel; } } public class HashMapStudentEx { public static void main(String[] args) { //HashMap으로 [학생 이름, Student 객체]를 이용하여 저장, 출력 HashMap map = new HashMap (); map.put("황기태", new Student(1, "010-111-1111")); // 3명의 학생 저장 map.put("이재문", new Student(2, "010-222-2222")); map.put("김남윤", new Student(3, "010-333-3333")); Scanner scanner = new Scanner(System.in); while(true) { System.out.print("검색할 이름?"); String name = scanner.nextLine(); // 사용자로부터 이름 입력 if(name.equals("exit")) break; // while 문을 벗어나 프로그램 종료 Student student = map.get(name); // 이름에 해당하는 Student 객체 검색 if(student == null) System.out.println(n...

[자바기초] HashMap으로 key, value이용해 단어사전처럼 활용하기

package com.ljh.map; import java.util.HashMap; import java.util.Scanner; public class HashMapDicEx { //HashMap으로 key, value이용해 단어사전처럼 활용하기 public static void main(String[] args) { HashMap dic = new HashMap (); // 해시맵 생성 // 3개의 (key, value) 쌍을 dic에 저장 dic.put("baby", "아기"); // "baby"는 key, "아기"은 value dic.put("love", "사랑"); dic.put("apple", "사과"); // 사용자로부터 영어 단어를 입력받고 한글 단어 검색. "exit" 입력받으면 종료 Scanner scanner = new Scanner(System.in); while(true) { System.out.print("찾고 싶은 단어는?"); String eng = scanner.next(); if(eng.equals("exit")) { System.out.println("종료합니다..."); break; } // 해시맵에서 '키' eng의 '값' kor 검색 String kor = dic.get(eng); if(kor == null) System.out.println(eng + "는 없는 단어 입니다."); else System.out.println(kor); } scanner.close(); } }

[자바기초] Vector, Iterator를 이용해서 정수 삽입후 모든 정수 출력 및 합산

package com.ljh.list; import java.util.Iterator; import java.util.Vector; public class IteratorEx { //Vector를 이용해서 정수 삽입 //Iterator를 이용해 모든 정수 출력 및 정수 합산 public static void main(String[] args) { // 정수 값만 다루는 제네릭 벡터 생성 Vector v = new Vector (); v.add(5); // 5 삽입 v.add(4); // 4 삽입 v.add(-1); // -1 삽입 v.add(2, 100); // 4와 -1 사이에 정수 100 삽입 // Iterator를 이용한 모든 정수 출력하기 Iterator it = v.iterator(); // Iterator 객체 얻기 while(it.hasNext()) { int n = it.next(); System.out.println(n); } // Iterator를 이용하여 모든 정수 더하기 int sum = 0; it = v.iterator(); // Iterator 객체 얻기 while(it.hasNext()) { int n = it.next(); sum += n; } System.out.println("벡터에 있는 정수 합 : " + sum); } }

[자바기초] LinkedList, Iterator를 활용하여 리스트의 요소 모두 출력하기

package com.ljh.list; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; public class CollectionsEx { static void printList(LinkedList l) { // 리스트의 요소를 모두 출력하는 메소드 Iterator iterator = l.iterator(); // Iterator 객체 리턴 while (iterator.hasNext()) { // Iterator 객체에 요소가 있을 때까지 반복 String e = iterator.next(); // 다음 요소 리턴 String separator; if (iterator.hasNext()) separator = "->"; // 마지막 요소가 아니면 → 출력 else separator = "\n"; // 마지막 요소이면 줄바꿈 System.out.print(e+separator); } } //Collections 함수를 통해 요소 정렬과 역순정렬 //Collections binarySearch 함수 통해 단어검색 public static void main(String[] args) { LinkedList myList = new LinkedList (); // 빈 리스트 생성 myList.add("트랜스포머"); myList.add("스타워즈"); myList.add("매트릭스"); myList.add(0,"터미네이터"); myList.add(2,"아바타"); Collections.sort(myList); // 요소 정렬 printList(my...

[자바기초] ArrayList를 활용하여 4개의 이름 입력 받아서 가장 긴 이름 출력

package com.ljh.list; import java.util.ArrayList; import java.util.Scanner; public class ArrayListEx { //ArrayList를 활용하여 4개의 이름 입력 받아서 가장 긴 이름 출력 public static void main(String[] args) { // 문자열만 삽입 가능한 ArrayList 생성 ArrayList a = new ArrayList (); // 키보드로부터 4개의 이름 입력받아 ArrayList에 삽입 Scanner scanner = new Scanner(System.in); // Scanner 객체 생성 for(int i=0; i >"); String s = scanner.next(); // 키보드로부터 이름을 입력 a.add(s); // ArrayList 컬렉션에 삽입 } // ArrayList에 들어 있는 모든 이름 출력 for(int i=0; i

[자바기초] split 함수로 단어 쪼갠후 특정단어에 대한 갯수출력

첨부파일 다운로드 package cmd.ljh; public class MainClass { //클래스에 있는 여러개의 문장을 받아서 쪼갠후 단어로 저장 //저장된 특정단어에 대한 갯수 출력 public static void main(String[] args){ DataClass dc = new DataClass(); //this.words = "college, life, looking, death, company, never, one, years, now, just, love, everything, something, parents"; String [] words = dc.words.split(", "); String [] temp = dc.txt.split(" "); //1번. 클래스 선언과 동시에 생성자에서 word를 넣어주는 방법 WordCountClass []wcc = new WordCountClass[dc.words.length()]; for (int i = 0; i < words.length; i++) { wcc[i] = new WordCountClass(words[i]); } //2번. 두줄로 하는 방법 // WordCountClass []wcc = new WordCountClass[dc.words.length()]; // for (int i = 0; i < words.length; i++) { // wcc[i] = new WordCountClass(); // wcc[i].word = words[i]; // } // for (int i = 0; i < words.length; i++) { for (int j = 0; j < temp.length; j++) { temp[j] = temp[j].toUpperCase(); words[i] = words[i].toUp...
건강한 개발자의 좋은습관 늦었지만 지난 소스를 올려보자!! 하이라이트 처리 사이트 http://ddmix.blogspot.com/2015/11/syntax-highlighter-blogger.html 소스 꾸며줄 사이트 https://accessify.com/tools-and-wizards/developer-tools/quick-escape/default.php

파이썬

파이썬

Java 관련

Java 관련 글입니다.
이런식이구만 ㅎㅎ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <script> function singleF(){ alert(document.getElementById("singleWord").value); } function doubleF(idx){ alert(idx); } </script> <% String wordA = "ㅋㅋ"; String [] listB={"가", "나", "다"}; %> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="Test" method="get"> <% //동일페이지에서 꺽쇠로 닫혀진 선언부로는 ${wordA} 이런식으로 사용못함 %> <input type="hidden" id="singleWord2" value="${wordA }" /> <input type="hidden" id="singleWord" valu...