2008년 7월 31일 목요일

java HTML Parsing & ParserCallback


import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTML;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.HttpURLConnection;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.parser.ParserDelegator;


public class HTMLParsing {
private static FileWriter writer;
//파서는 콜백 형식으로 되어 있다. 각 태그가 들어 올때 적절한 메소드가 호출됨
private class CallbackHandler extends HTMLEditorKit.ParserCallback {

//태그가 시작할 때 호출 되는 메소드
public void handleStartTag(HTML.Tag tag, MutableAttributeSet a, int pos) {

//<A href 인 경우... A태그를 찾는다...
if (tag == HTML.Tag.A) {
System.out.println(a.getAttribute(javax.swing.text.html.HTML.Attribute.HREF));
}
}

//텍스트가 들어올때 호출되는 메소드
public void handleText(char[] data, int pos) {
System.out.println(data);
try {
//텍스트만 파일에 저장합니다.
writer.write(data);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}



public void parse(String str) {
String content = null;

try {

//입력받은 URL에 연결하여 InputStream을 통해 읽은 후 파싱 한다.
// URL url = new URL(str);
//
// HttpURLConnection con = (HttpURLConnection)url.openConnection();
//
// InputStreamReader reader = new InputStreamReader(con.getInputStream(),"euc-kr");
// 여기를 수정하시면 되고요.
// 의문점 부담없이 쪽지 주세요.
InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(str)),"euc-kr");

new ParserDelegator().parse(reader, new CallbackHandler(), true);
//
// con.disconnect();
}
catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) throws IOException {
//저장파일 만들고
writer = new FileWriter("c:/temp/output.txt");

HTMLParsing parser = new HTMLParsing();
parser.parse("c:/temp/aa.txt");
//파일닫는다.
writer.close();
}
}




문]
아래소스가 있습니다.
밑의 소스는
URL주소를 명령행 인자로 넣으시면 그 URL주소의 소스를 긁어와서 필요없는 태그들을 제거하고 필요한 내용만
남기고 저장하는 소스인데요,^^
저는 URL주소를 명령행인자로 줘서 URL소스를 긁어오는것이 아니라,
미리 준비되어 있는 txt파일을 불러와서 파싱하고 싶습니다.
C:\TEMP\aa.txt
탬프폴더 안에 있는 aa.txt파일을 불러와서 파싱하고 싶은데....
Input,output,,..stream의 개념이 제대로 없는건지....책을 읽고 이것저것 시도해봤는데 안되네요-_-;;;
고수님들 제발 도와주세요.................ㅠㅠ
밑의 소스는 일단 파싱은 알아서 해주니 그부분 말고
저장되어 있는 텍스트파일(소스) 불러와서 새로 다시 다른이름으로 저장하고 싶습니다..ㅠㅠ
어떻게 하면되나요??
꼭 좀 도와주십쇼...
부탁드립니다.


java throws IOException



//천천히 하세요.
//님의 질문은 길게 잡으면 한 반학기 강의내용입니다.
import java.io.*;
//Count 클래스 명은 중복하면 안 됩니다.
//만약 일지매가 2명이라면 어이 일지매 하면 누가 오겠습니까?
//컴퓨터는 1명만 원하니 이름은 중복하면 안 되어요.
public class Count
{
public static void countChars(Reader in) throws IOException
{
int count =0;

while (in.read() != -1) count++;

System.out.println("Count"+count+"chars.");
}
//시작하는 곳이 2개면 컴퓨터는 어디부터 시작할까요?
//역시 시작하는 곳은 1개가 좋겠죠. main은 시작을 의미합니다.
//경찰이 강도, 사기, 도둑, 촛불시위 기타 등등을 감시하지요.
//"throws 촛불시위" 이렇게 하면 경찰은 촛불시위를 감시하지 않습니다.
//"throws Exception" 예외상황을 무시한다는 거여요.
//예외상황은 무엇인가 하면 강도, 사기, 도둑같이 프로그램에 문제를 만들 수 있는 상황들입니다
public static void main (String[] args) throws Exception
{
if(args.length >= 1)
countChars( new FileReader(args[0]));
else
System.err.println("Usage : Count filename");
}
}

문]
무엇이 잘 못되었는지 알려주세요 ㅠㅜ 고쳐봐도 안되네요ㅠㅜ
그리고 public static void main (String[] args) 이곳에 있는 main 있자나요 그 메인은 위에 안썼는데
써야되나요??? main은 무조건 써야하나요???

의문점 부담없이 쪽지 주세요.

Google Adsense PIN Number


구글 애드센스 핀 번호(PIN 번호)구경 하세요.

가입하고 궁금했는데 이렇게 생겼네요.

2008년 7월 29일 화요일

java Runnable


잘 나오는것 같은데요.
의문점 쪽지 주세요.

java 자바 별 그리기

잘 하셨는데 for(int a=5;a<=1;a--) "<" 사용하면 조건이 처음부터 거짓이므로 한번도 실행이 안됩니다. for(int a=5;a>=1;a--) 에서 ">"로 수정하시면 잘 실행되어요.

문]
역삼각형 별그리기인데
제 생각엔 이식일것 같은데 안되네요...

의문점 쪽지주세요.

2008년 7월 26일 토요일

java Applet Mouse Event





import java.awt.*;
import java.applet.*;

public class MouseConst_Event extends Applet {
Image aa;

int b;

private boolean mDraw = false;

public void init() {
}
public void paint(Graphics g) {
// aa = getImage(getCodeBase(),"car.jpg");
// g.drawImage(aa,20,20,this);
// if안에 g.drawImage(aa,20,20,this);를 넣으세요.
if(mDraw){g.drawOval(10, 10, 100, 100);}
}
public boolean handleEvent(Event e) {
switch(e.id) {
case Event.MOUSE_DOWN:
showStatus("MouseDown이래요!!");
mDraw=true;
repaint();

return true;

case Event.MOUSE_UP:
showStatus("MouseUp이래요!!");
mDraw=false;
repaint();

return true;

case Event.MOUSE_ENTER:
showStatus("MouseEnter 이래요!!");
return true;

case Event.MOUSE_MOVE:
showStatus("MouseMove이래요!!");
return true;

case Event.MOUSE_DRAG:
showStatus("MouseDrag이래요!!");
return true;

case Event.MOUSE_EXIT:
showStatus("MouseExit이래요^_^");
return true;
}
return true;
}
}




문]
위 코드를 실행시키면 그림이 하나 뜨게 되잖아요.. 그 그림을 마우스 이벤트에 적용 시키고 싶은데요.
빈화면 이었다가 마우스 다운을 하면 그림이 보이게요... 마우스 업이 되면 그림이 안보이고.. 이렇게 하고싶은데...

의문점 부담없이 쪽지주세요.

2008년 7월 25일 금요일

java awt drawImage() 메서드로 다른 윈도우에 그림띄우기





import java.awt.*;
class MyFrame extends Frame{
public MyFrame(){
super("두번째");
setSize(400,300);
setVisible(true);
}
}
class Test2 extends Frame{
MyFrame My = new MyFrame(){
public void paint(Graphics g){
Toolkit tk = Toolkit.getDefaultToolkit();
//"c:/draw_Image.JPG" 는 님의 파일로 수정 하세요 "2.gif"
//의문점 있으시면 쪽지주시고요.^^;
Image img = tk.getImage("c:/draw_Image.JPG");
g.drawImage(img,0,0,My); // ★
}};
Test2(){
super("첫번째");
setSize(300,400);
setVisible(true);
}

public void paint(Graphics g){
// Toolkit tk = Toolkit.getDefaultToolkit();
// Image img = tk.getImage("2.gif");
// g.drawImage(img,0,0,My); // ★

g.drawString("첫번째", 100, 100);
}
}
public class Test {
public static void main(String ar[]){
new Test2();
}
}




문]
별표 쳐진 부분이요.
전 두번째 윈도우에다가 그림을 띄우기 싶거든요.
근데 이렇게 하니깐 그림을 안뿌려주네요? (물론 My 를 this 로 바꿀경우 정상 작동합니다!)
어떻게하면 Test2 클래스안에서 MyFrame 윈도우 에다가 그림을 띄워 줄 수 있을까요?


java image view





import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.File;

import javax.swing.JOptionPane;

public class ImgViewer extends Frame implements ActionListener {
Image curImg;
Panel p;
Button b0, b1, b2, b3;
Dimension d;
int command;
static final int SHOW_NORM = 0;
static final int SHOW_HORIZONTAL = 1;
static final int SHOW_VERTICAL = 2;
ImgViewer(String s) {
super(s + " 파일 보기");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});

// curImg = Toolkit.getDefaultToolkit().getImage(s);
command = SHOW_NORM;
setLayout(new BorderLayout());
p = new Panel();
p.add(b0 = new Button("File Open")); // 파일 오픈 Button 추가
p.add(b1 = new Button("정상 그림"));
p.add(b2 = new Button("좌우뒤집기"));
p.add(b3 = new Button("위아래뒤집기"));
add(p, BorderLayout.SOUTH);
b0.addActionListener(this); // 해당 Button 에 ActionListener을 설정 한다.
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
setSize(700,300);
setVisible(true);
//d = p.getSize();은 여기에 한번사용 하면 되고요.
d = p.getSize();

}

public void actionPerformed(ActionEvent e) {
Button b = (Button) e.getSource();
if (e.getSource() == b0) { // File Open Button 이 눌렸을 경우 처리...
openImage();
return;
} else if (b.getLabel().equals("정상 그림")) {
command = SHOW_NORM;
} else if (b.getLabel().equals("좌우뒤집기")) {
command = SHOW_HORIZONTAL;
} else if (b.getLabel().equals("위아래뒤집기")) {
command = SHOW_VERTICAL;
}
reDraw(command);
}

// File Open Button 이 눌렸을 경우 호출 된다.
public void openImage() {
FileDialog fd = new FileDialog(this, "File Open");
fd.show();
String img = fd.getDirectory() + fd.getFile();

if (isOpen(img)) {
curImg = Toolkit.getDefaultToolkit().getImage(
fd.getDirectory() + fd.getFile());

} else {
JOptionPane jp = new JOptionPane("Message Box",
JOptionPane.ERROR_MESSAGE);
jp.showMessageDialog(this,"This is file not Image!! \nPlease !! Selected Image File ");
}
}

// 선택된 File이 이미지 File인지를 비교 true , false 를 Return
public boolean isOpen(String img) {
String[] extension = { "bmp", "jpg", "jpeg", "gif" };
for (int i = 0; i < extension.length; i++) {
if (img.toLowerCase().endsWith("." + extension[i])) {
return true;
}
}
return false;
}

public void paint(Graphics g) {
if (curImg == null)
return;

int w = curImg.getWidth(this);
int h = curImg.getHeight(this);


switch (command) {
case SHOW_NORM:
g.drawImage(curImg, 5, d.height + 5, this);
// setSize(curImg.getWidth(this),curImg.getHeight(this)); 이건 필요 없음
// setSize(w,h+100);

break;
case SHOW_HORIZONTAL:
//33창의 영역 5는 님이 설정한 영역
g.drawImage(curImg, 0, 0+33+5, d.width, d.height+h+5, w, 0, w-d.width, h, this);
// setSize(w,h+100);
break;
case SHOW_VERTICAL:
//여기 좀 이상해요. 님의 원소스 대로사용하고, 그냥 좌표만 수정했습니다.
g.drawImage(curImg, 0, 0+33+5, d.width, d.height+h+5, w, h, w-d.width, 0, this);
//setSize(w,h+100);
break;
}

setSize(w,h+100);//여기에 한번
}

public void reDraw(int command) {
this.command = command;
repaint();
}

public static void main(String args[]) {
ImgViewer iv = new ImgViewer("ImageViewer");
}
}





문]
이게 만든 소스입니다. 그런데 이부분에서 이미지를 구현하는 부분이 메뉴바를 인식하지못해서
메뉴바를 나타내는 부분만큼 이미지가 잘리게 됩니다. 어떻게 수정해야 할까요?


2008년 7월 24일 목요일

JTabbedPane 에서 탭 스타일 수정하기





import java.awt.Color;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.plaf.basic.BasicTabbedPaneUI;
class UI extends BasicTabbedPaneUI
{

@Override
protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected) {
// TODO Auto-generated method stub
//보통 보이는 부분 여기서 그려주고
g.setColor(Color.white);
g.drawRoundRect(x, y, w, h, 10, 10);
if (isSelected)
{
//여기는 선택시 보여주는 부분을 그려주면 됩니다.
g.setColor(Color.magenta);
g.drawLine(x+4 , y+4 , x+w-4 , y+4);

}

}
}

public class TestBasicTabbedPaneUI
{
public static void main(String[] args)
{
JFrame vFrame = new JFrame();
vFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
vFrame.setSize(200, 200);

JTabbedPane Tab = new JTabbedPane();
Tab.setUI(new UI());

Tab.add("One", new JPanel());
Tab.add("Two", new JPanel());
Tab.add("Three", new JPanel());

vFrame.getContentPane().add(Tab);
vFrame.setTitle("Tabs Example");
vFrame.show();
}
}



문]탭드페인의 탭 모양을 변형시키고싶은데요...
예를 들어 탭들의 높이를 약간 줄인다던지
선택되었을때 위쪽에 보이는 주황색 칼라를 바꾼다던지
탭들의 모서리부분의 둥그스런 부분을 직각으로 한다던지
이렇게 하려면 어떤 클래스를 써야하나요??

2008년 7월 23일 수요일

자바 애플릿 마우스 이벤트 MouseClickExample






import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Date;
public class MouseClickExample extends Applet implements MouseListener {
int draw=0;

public void paint(Graphics g) {
//g.drawImage()로 바꿔사용하세요.
//의문점 있으면 쪽지주세요.
if(draw==1) g.drawRect(10, 10, 100, 100);
else if(draw==2)g.drawOval(10, 10, 100, 100);
}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
// 다운 그림선택
draw=1;
repaint();
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
//업 그림선택
draw=2;
repaint();
}

@Override
public void init() {
// TODO Auto-generated method stub
addMouseListener(this);
super.init();
}

@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}

}





문]
자바 애플릿으로 마우스 이벤트를 주고 싶은데요
마우스 다운과 마우스 업 이벤트시 서로 다른 이미지를 화면에 뿌려 주고 싶은데요..
어떻게 해야 할지를 몰라서요....
이미지를 화면에 뿌려만 주는건 할수 있느데... 마우스 이벤트를 적용할려니깐.....


자바 swing으로 프레임이나 다이얼로그 띄울때 초기위치 변경






import java.awt.*;
import java.awt.event.*;

public class Test extends Frame {

Test(){

setLocation(200, 200);//창의 위치 조절
setSize(300,300);
setVisible(true);
}


public static void main(String ar[]){
new Test();
}

}

문]
자바 스윙으로 메신저를 짜구 있는데요.. 프레임이나 다이얼로그 창 실행시키면 항상 좌측 제일 상단 끝에서 뜨는데요.. 이거 위치 변경 할 수 있는 방법없나요? 모든창이 전부 좌측 상단 모서리부터 뜨는데;; 이거 변경할수 있는 소스좀 올려주세요 듣기론 프레임 좌표를 다 알아내서 바꿔야 한다는데..

java drawImage & Toolkit.getDefaultToolkit 수정

수정

님 소스가 돌아가려면 2.gif 를 마우스로 드래그해서 이동하세요.
사정상 그림 모자이크 처리하였습니다.


2008년 7월 22일 화요일

java Stack recursion

자바 스택출력 재귀호출 관련 소스


public class StackTest {

public static void main( String[] args ) {

Stack stack = new Stack(6);
Stack stack2 = new Stack(6);

stack.push( '2' );
stack.push( '6' );
stack.push( '3' );
stack.push( '7' );
stack.push( '1' );
stack.push( '9' );

System.out.print("First array elements are: ");
stack.print();

System.out.print("\n");
System.out.print("Second array elements are: ");

//char s;
//do {
//
//s = stack.pop();
//stack2.push(s);
//
//}while ( s!=('2') );


recursion_F(stack,stack2);

stack2.print();
}

private static void recursion_F(Stack stack, Stack stack2) {
// TODO Auto-generated method stub
char s;
s = stack.pop();
stack2.push(s);
if( s==('2')) return;
recursion_F(stack,stack2);
// 자기자신을 재귀호출(recursion)부분
}

}

class Stack {

private int maxSize;

private char[] stackArray;

private int top;

public Stack(int s) {

maxSize = s;

stackArray = new char[maxSize];

top = -1;

}

public void print() {

for(int i=0;i<stackArray.length;i++){

System.out.print(stackArray [i] +" ");

}

}

public void push(char j) {

stackArray[++top] = j;

}

public char pop() {

return stackArray[top--];

}

public char peek() {

return stackArray[top];

}

public boolean isEmpty() {

return (top == -1);

}

public boolean isFull() {

return (top == maxSize - 1);

}
}


문]

'StackTest' 클래스안의 do, while 구문을 재귀호출(recursion)로 바꾸어서똑같이 출력하고 싶습니다.

2008년 7월 21일 월요일

지식in 사용법


handfeel 블로그의 지식 in의 내용을 쉽게 검색하는 방법
검색창에 찾고자 하는 내용을 입력하고 검색버튼을 눌러주세요.

2008년 7월 20일 일요일

java Scanner test

자바 프로그래밍으로 로또 번호 생성/결과 맞추기




public class lotto
{
public static void main( String[] args )
{
int[] r = getUserNumbers();// 입력 함수 호출
for(int i = 0; i < r.length; i++) {//받은 숫자 출력
System.out.println(r[i]);
}
}

public static int[] getUserNumbers() {


boolean[] chk =new boolean[49];// 중복입력 판단용 배열
int List[] = new int[6];
int temp[] = new int[List.length];
int num;
Scanner input = new Scanner(System.in);
boolean isValidate ;

for(int i = 0; i < List.length; i++) {

System.out.print("Enter 6 different numbers bewtween 1 and 49:");
num = input.nextInt();
isValidate = num > 0 && num < 50;
// chk[num]가 참이면 중복입력
//거짓이면 입력값을 배열에 저장하고 chk[num]를 참으로 만든다.
if(isValidate && !chk[num]) { List[i] = num; chk[num]=true;}
else --i;
}
return List;//결과를 배열로 return
}

}



문]

메써드와 어레이를 사용해서 로또 복권을 플레이하는거랍니다.우선 결과 맞추기, 자동번호 생성 메써드는 다 되었는데..유저 입력부분에서 1~49번까지만 받고 그리고 중복번호는 입력받지않는 부분에서 헤매게 되네요..'

java JPopupMenu Example

메뉴아이템에 팝업창 띄우기




import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
class MenuPopup_test extends JFrame implements MouseListener
{
JMenu file = new JMenu("파일");
JMenuItem test1 = new JMenuItem("속성1"); // 제거될 가능성이 있는 컴포넌트
JMenuItem test2 = new JMenuItem("속성2"); // 제거될 가능성이 있는 컴포넌트
JPopupMenu pop = new JPopupMenu();
JMenuItem del = new JMenuItem("삭제");
JMenuItem temp;
public MenuPopup_test(){

this.setVisible(true);
this.setSize(500,300);
// 메뉴설정
JMenuBar jmb = new JMenuBar();
this.setJMenuBar(jmb);
jmb.add(file);
file.add(test1);
file.add(test2);
//팝업설정
pop.add(del);

test1.addMouseListener(this);
test2.addMouseListener(this);
del.addMouseListener(this);
}

public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e){
if(e.getSource()==del){
file.remove(temp);
}
}
public void mouseReleased(MouseEvent e){

if(e.getSource()==test1 e.getSource()==test2){
//메뉴마우스좌표+메뉴좌표+창테두리값
popUpShow(e.getX()+e.getComponent().getX()+5, e.getY()+e.getComponent().getY()+30+20);
//삭제메뉴
temp=(JMenuItem) e.getComponent();

}
}

private void popUpShow(int x, int y) {
// TODO Auto-generated method stub
pop.show(this, x, y);
}

public static void main(String[] args)
{
new MenuPopup_test();
}
}

문]
JMenuItem 에서 마우스가 released 즉 떼어지면....
바로 그 포인트장소에 팝업창을 뛰운후 팝업창메뉴의 삭제를 누르면... JMenuItem 이 JMenu에서 아예 제거되도록 하려고 합니다.
문제는 mouseReleased 이벤트함수에서 팝업창을 띄울때 팝업,show(component, x, y) 인데요
component 를 어떻게 줘야할지 모르겠습니다..

java 기초질문 - 성적표 출력하기







import javax.swing.*;
public class A4 {
public static void main (String [] args) {
processStudent();
System.exit (0);
}
public static String getStudentName ( ) {
String input = JOptionPane.showInputDialog ("Enter Student name:");
System.out.println ("Name: " + input);
return input;
}
public static int getStudentNumber ( ) {
String input = JOptionPane.showInputDialog ("Enter Student number:");
isValidStudentNumber (input);
return Integer.valueOf(input);
}
public static boolean isValidStudentNumber ( String numStr ) {
boolean bool = true;
int parseInt = Integer.parseInt (numStr);
if (parseInt < 0) {
JOptionPane.showMessageDialog (null, "Invaild Student Number!");
getStudentNumber ();
} else {
System.out.println ("Student #: " + numStr);
}
return bool;
}

public static double convertGrade ( String gradeStr ) {
double convertGrade = 0;
if (gradeStr.equalsIgnoreCase ("f") gradeStr.equals ("0") ) {
convertGrade = 0;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("d") gradeStr.equals ("1") ) {
convertGrade = 1;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("c") gradeStr.equals ("2") ) {
convertGrade = 2;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("c+") gradeStr.equals ("2.5") ) {
convertGrade = 2.5;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("b") gradeStr.equals ("3") ) {
convertGrade = 3;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("b+") gradeStr.equals ("3.5") ) {
convertGrade = 3.5;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("a") gradeStr.equals ("4") ) {
convertGrade = 4;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("a+") gradeStr.equals ("4.5") ) {
convertGrade = 4.5;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else {
convertGrade = -1;
System.out.println ("Invalid grade:" + gradeStr);
//getStudentGrades ();//이부분은 필요없음
}
return convertGrade;
}

public static double[] getStudentGrades() {

//double [] studentGrades = {0};
int index=0;// 배열의 첨자
double [] studentGrades = new double[100];//배열을 100개 선언
while(true) {
String input = JOptionPane.showInputDialog ("Enter grade:");
if (input.equals ("999") ) {
studentGrades[index]=999;//입력 끝이면 999를 배열에 저장,끝을 의미
return studentGrades;// 처리된 값 전체를 배열로 return
} else {
double temp = convertGrade (input);//convertGrade 로부터 값을 리턴 받음

if( temp!=-1.0 ){//Invalid 가 아니면 값을 배열에 저장
studentGrades[index++]=temp;
}
}
}
}

public static void processStudent() {
double [] studentGradesPrint;
String studentName = "";
int studentNumber = 0;
studentName = getStudentName ();
studentNumber = getStudentNumber ();
studentGradesPrint=getStudentGrades ();
System.out.println ("Name: " + studentName);
System.out.println ("Student #: " + studentNumber);
System.out.print ("Grade List:");
for(int i=0;studentGradesPrint[i]!= 999;i++){//출력
System.out.print (" " + studentGradesPrint[i]+",");
}
}
}
//의문점 쪽지주세요.
문]
성적표 프로그래밍 만들고있습니다.
아직 완전 시작단계라 많은 method를 배우지도 못하였구요 무엇보다 어떻게 해야하는지 잘 모르겠습니다.
일단 무조건 들어가야하는 method는
public static String getStudentName ( String studentName )
public static int getStudentNumber ( int studentNumber )
public static boolean isValidStudentNumber ( String numStr )
public static double convertGrade ( String gradeStr )
public static double[] getStudentGrades()
public static void processStudent()
이거구요 메인 질문은 인풋 순서가 이름 물어보고 다음 학생번호 물어봅니다 그다음 성적을 물어봅니다.
성적을 인풋을 끝내려면 999를 넣으면 인풋이 끝나고 아웃풋이 나와야 합니다.
즉 이름 학생번호 성적순으로 물어본뒤 999를 넣으면 프로그래밍이 끝나야합니다.
예로)
Example Input:
Student Name: Cloney McStudent
Student Number: 1234567
Grades: -1, 55, A+, B, 2.5, F, 1, C, A, 999
Example Output:
Invalid grade: -1
Invalid grade: 55
Valid grade: A+
Valid grade: B
Valid grade: 2.5
Valid grade: F
Valid grade: 1
Valid grade: C
Valid grade: A
Name: Cloney McStudent
Student#: 1234567
Grade List: 4.5, 3.0, 2.5, 0.0, 1.0, 2.0, 4.0
아웃풋 순서가 이런식으로 나와야 합니다. 이럴때 어떻게 해야하는지 알아주세요.
직접 제가 한것을 수정해주시면 좋겠습니다. 도와주세요!!!!
배운 method는 string int double array while if else JOptionPane 이정도겠네요. 이것들로만 만들어주시면
감사하겠습니다. 제 이해를 돕기위해 코멘트까지 써주시면 더욱더 고맙겠습니다. 꼭좀 부탁드립니다.

2008년 7월 19일 토요일

"~"비트부정 연산자



public class Browser

{
public static void main( String[] args )
{

int i = 0xFFFFFFF1;

int j = ~i ;

System.out.println(j);

}
}

//1111 1111 1111 1111 1111 1111 1111 0001 => 0xFFFFFFF1
// "~"비트부정 연산자는 1을 0 ,0을 1로 만드는 연산자입니다.
// 각 비트의 ~은 0->1, 1->0 입니다
//0000 0000 0000 0000 0000 0000 0000 1110 => 0x0000000E =>10진수 14

Android at Google I/O and Developer Days

샌프란시스코의 구글 I/O 이벤트와 최근의 세계 개발자의 날 에서 모든 사람들과 교류 한다는것은 정말 대단한일입니다. 우리는 우리의 부스와 방송대담에서 이루어진 인조인간 개발자와 만남을 갖고 당신의 질문에 응답하는 것을 즐겼습니다.
참석하지 못하시는 분들은 모든 세션을 비디오로 보실수 있습니다.

http://sites.google.com/site/io/
Enjoy!


Posted by David McLaughlin, Android Advocate on 19 June 2008 at 4:27 PM
It was great to connect with everyone at the Google I/O event in San Francisco and at our recent Developer Days across the globe. We enjoyed meeting all of the Android developers and answering your questions - both at our booth and at the fireside chats.
For those of you who were unable to attend, all of the sessions are available on video:
http://sites.google.com/site/io/
Enjoy!

java JDialog Example

JDialog 의 소유자 설정

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
class mainFrame extends JFrame
{
public mainFrame(){
this.setSize(300,200);

this.setVisible(true);
new parentDLG();
}
public static void main(String[] ar){
new mainFrame();
}
}
class parentDLG implements MenuListener{
Container con;
mainFrame frame;
JDialog dlg = new JDialog(frame, true);
JMenu menu = new JMenu("메뉴");
JEditorPane edPane = new JEditorPane();
JScrollPane jsp = new JScrollPane(edPane);
public parentDLG(){
dlg.getContentPane().add(jsp);
JMenuBar jmb = new JMenuBar();
jmb.add(menu);
dlg.setJMenuBar(jmb);
menu.addMenuListener(this);
edPane.setContentType("text/html");
edPane.setText("<html><body>hi</body></html>");
dlg.setSize(200,200);
dlg.setVisible(true);
dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
public void menuCanceled(MenuEvent e){}
public void menuDeselected(MenuEvent e){}
public void menuSelected(MenuEvent e){

if(e.getSource() == menu){

new subDLG(this.dlg);

}
}
}

class subDLG
{

JDialog ddd;
JDialog subdlg = new JDialog(ddd, true); //// 소유자가 parentDLG다이얼로그이어야하고, parentDLG 다이얼로그 앞쪽에 보여져야함..

//this.dlg를 생성자가 받아서 사용하면 에러는 사라지는데 이것이 원하시는 것인지는 모르겠습니다.
public subDLG(JDialog dlg) {

ddd=dlg;


subdlg.getContentPane().add(new JButton("aaa"));
subdlg.setSize(100,100);
subdlg.setVisible(true);
subdlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
};


문]
간단하게 아래 소스를 설명하자면 JFrame -> JDialog -> JDialog 의 관계로 JDialog 소유자 관계가 설정되어있습니다.
근데 문제가..... 두번째 JDialog 에서 세번째 JDialog 를 불러들일때 오류가 발생합니다.
부모다이얼로그가 자식다이얼로그를 new subDLG() 로 호출을 하면.....
자식다이얼로그인 subDLG 클래스가 호출되는데 이때 이 자식다이얼르고의 소유자를 부모다이얼로그로 설정할때 에러가 발생하고있는데 이부분을 어떻게 처리해야하는지 모르겠습니다.....;;
에러좀 잡아주세요.

-


Sidewinder


World


FishMusic


LaughingBaby