2012년 12월 28일 금요일

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

에러 발생!
num = Integer.parseInt(str);

여기서 나타난 문제가 NumberFormatException이다.
수를 의미하는 문자열을 받아야 정수로 변환할 수 있지만 수를 입력받지 못하고 엔터를 누를 경우 NULL값이 입력되어 에러가 발생하는 것이다.

2012년 12월 27일 목요일

오늘 내가 만들어본 클래스 객체!!!(돈 세는 프로그램)


public class Practice1 {
private int money;
private int per;
private int bal;
private int k;
int[] temp = new int[8];
public Practice1(int money, int per){
this.money = money;
this.per = per;
temp[0] = money;
temp[1] = money-per;
this.bal = temp[1];
k = 2;
}

public void calc(){
for(int i=2; i<8; i++)
{
money = money/k;
temp[i] = bal/(money);
bal = bal-(money*temp[i]);
if(k==2)
k=5;
else
k=2;
}
}
public void disp(){
System.out.println("손님이 지불한 금액: " + temp[0]);
System.out.println("손님이 구입한 금액: " + per);
System.out.println("잔돈내역");
System.out.println("거스름 돈" + temp[1]);
System.out.println("오천원" + temp[2]);
System.out.println("천원" + temp[3]);
System.out.println("오백원" + temp[4]);
System.out.println("백원" + temp[5]);
System.out.println("오십원" + temp[6]);
System.out.println("십원" + temp[7]);
System.out.println();
}
}

----------------------------------------------------------------


public class Main {

public static void main(String[] args) {
Practice1 mi = new Practice1(10000, 2520);
mi.calc();
mi.disp();

Practice1 mi2 = new Practice1(12020, 3045);
mi2.calc();
mi2.disp();
}
}

[Java] Scanner 클래스

오늘 배운 클래스!


java.util
Class Scanner

java.lang.Object
  java.util.Scanner


 키보드의입력값을 읽어 들일 수 있는 클래스이다.
 BufferedReader를 사용하기가 번거로웠는데 편한듯하다.

이 클래스를 이용해서 정수나 문자열 입력이 편리하다.

모든 클래스는 Object클래스를 상속한다. Object클래스 안에 기본적으로 제공되는 메서드가 많이 있는데 그중 equals()를 사용하면 데이터끼리의 비교를 해볼 수 있어 편리하다.


import java.util.Scanner;

public class Mission2 {

public static void main(String[] args) {
int kor, eng, mat;
int sum;
double aver;

Scanner scan = new Scanner(System.in);

System.out.println("국어성적을 입력하세요 : ");
kor = scan.nextInt();
System.out.println("영어성적을 입력하세요 : ");
eng = scan.nextInt();
System.out.println("수학성적을 입력하세요 : ");
mat = scan.nextInt();

sum = kor + eng + mat;
aver = (double)sum / 3;

if(aver<60)
System.out.println("당신은 F학점입니다.");
else if(aver<70)
System.out.println("당신은 D학점입니다.");
else if(aver<80)
System.out.println("당신은 C학점입니다.");
else if(aver<90)
System.out.println("당신은 B학점입니다.");
else
System.out.println("당신은 A학점입니다.");

System.out.println("총합 : " + sum + "점");
System.out.println("평균 : " + (int)aver + "점");
}
}

[Java] 조건문 주의사항

if ~ else
조건의 범위를 좁은 것에서 넓은 것으로 넓혀 나가며 코드를 작성해야한다. 그렇게 하여야만 좁은 범위의 조건 검사가 이뤄질 수 있다.

[Java] 연산자에서 부족한 것들

String str = "num = " + 30; //입력 가능, 출력결과 => num = 30

str = "num = " + 30 + 40; //이때의 결과는? 출력결과 => num = 3040

str = 30 + 40 + "num = "; // 출력결과 => 70num =

위의 예제에서 보면 문자열에 정수나 소수를 더하면 항상 문자열이 되는 것을 알 수 있다.
그러나 왼쪽부터 나가다가 만나는 문자열에서는 연산자부터 수행된다.

2012년 12월 26일 수요일

[Java] (캐스팅) 강제 형변환


public class Mission2 {

public static void main(String[] args) {
int kor, eng, mat;
int sum;
double aver;

kor = 100;
eng = 90;
mat = 80;

sum = kor + eng + mat;
aver = (double)sum / 3;

System.out.println("총합 : " + sum + "점");
System.out.println("평균 : " + (int)aver + "점");
}
}

캐스팅은 큰 자료형에서 작은 자료형으로 값을 대입할 때 일어난다.
에러는 나타나지 않지만 값을 잃어버리는 단점이 있다.(당연한 것이다.)

[Java] 처음 그리고 변수


public class Mission1 {

public static void main(String[] args) {

int num = 0;//지역변수 선언(메모리 4바이트 할당)
    //지역변수는 반드시 변수를 초기화 해야한다.
String str = "";//문자열을 초기화

str = str + "abc";
num = num + 10;

System.out.println(str);
System.out.println("num = " + num);
}
}

변수와 문자열 선언 및 초기화
변수를 지정하는 이유는 저장할 수 있는 값의 종류와 범위에 따라
잘 구별해야하기 때문이다. 즉, 데이터의 관리차원에서 원활한 관리를 위해서다.

-------------------------------------------------------

public class Mission2 {

public static void main(String[] args) {

int kor, eng, mat;
int sum, aver;

kor = 100;
eng = 90;
mat = 80;

sum = kor + eng + mat;
aver = sum / 3;

System.out.println("총합 : " + sum + "점");
System.out.println("평균 : " + aver + "점");
}
}

아주아주 간단한 성적 출력 프로그램

Start to Java

gogogo


package kosta.hello;

public class Hello {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
System.out.println("wow");
}
}

이클립스에서 중요한 단축키
한줄 복사 : Ctrl + Alt + 방향키 아래 or 위
출력문 자동쓰기 : sysout + Ctrl + Space
선택된 줄 주석처리 : Ctrl + /
자동 들여쓰기 : Ctrl + Shift + F