728x90
300x250

[Java] Class의 Exception 처리

 

Case 1) Numbers(클래스)

 

 

arr[] 공간의 길이가 0이기 때문에 해당 코드는 Exception이 발생하게 됩니다.

Arithmetric Exception이 발생하게 되는데,

 

try{

int average = obj.getAverage();

}catch(java.lang.ArithmeticException e){

     // 출력(산술 오류에 관한 메시지)

}

 

이처럼 처리하는 것도 하나의 방안이 될 수 있으나, 가장 좋은 구조는 Arithmetic Exception이 발생하지 않도록 처리하는 것이 가장 좋은 구조가 아닐까 생각해봅니다.

 

Case 2) Account(클래스)

 

class Account{
        String accountNo;
        String ownerName;
        int balance;
 
        Account(String accountNo, String ownerName, int balance){
             this.accountNo = accountNo;
             this.ownerName = ownerName;
             this.balance = balance;
        }
 
       void deposit(int amount){
             balance += amount;
        }
 
        int withdraw(int amount) throws Exception{
  
            if(balance < amount)
                  throw new Exception("잔액이 부족합니다.");
            else
                  balance -= amount;
  
            return amount;
       }
}

 

 

 

1. Try ~ Catch로 예외 처리

 

class Hello{
 
        public static void main(String args[]){
   
            Account obj = new Account("1", "곰", 40);
            obj.deposit(-40);
  
            try {
                 int amount = obj.withdraw(1);
                 System.out.println("인출액:" + amount);
            } catch (Exception e) {
                 System.out.println(e.getMessage());
            }
       }
}

 

2. throws Exception으로 처리 

 

class Hello{
 
      public static void main(String args[]) throws Exception{
  
            Account obj = new Account("1", "곰", 40);
            obj.deposit(-40);
 
            int amount = obj.withdraw(1);
            System.out.println("인출액:" + amount);
     }
}

 

참고 문헌) 뇌를 자극하는 JAVA 프로그래밍 P238~244

반응형
728x90
300x250

[C++] 난수 생성


C++을 통한 난수 생성을 정리해봤다.

 


1. 난수 생성 - 방법

rand() % M을 하면 0~(M-1)까지의 수가 생성된다.

rand() % M + N을 하면 N~(M+N-1)까지의 수가 생성된다.

 

rand() % 100이면 0~99까지의 수가 생성됨. ( 0 ~ (100-1) )

rand() % 100 + 1이면 1~100까지의 수가 생성됨. ( 1 ~ (100+1-1) )

 

rand() % 96 + 5이면 5~100까지의 수가 생성됨. ( 5 ~ (96+5-1)

 

C++에는 <cstdlib> 라는 헤더파일에 rand라는 난수 생성 함수가 있다.

rand()함수를 호출하면 0에서 RAND_MAX까지의 정수 1개를 리턴한다.

 


2. 참고자료(Reference)


1. http://arer.tistory.com/10, Accessed by 2014-05-17

 

 

반응형
728x90
300x250

[C++] Delay 함수 구현하기 - ctime, clock(), CLOCKS_PER_SEC

 

#include <iostream>
#include <ctime>        //clock() 함수와 clock_t형이 정의되어 있다.

int main()
{
        using namespace std;
        cout << "지연 시간을 초 단위로 입력하십시오: ";
        float secs;
        cin >> secs;
        clock_t delay = secs * CLOCKS_PER_SEC;
                 //지연 시간을 시스템 단위 클록 수로 변환
        cout << "카운트를 시작합니다.\a\n";
        clock_t start = clock();   //프로그램이 실행된 후 경과한 시간이 start에 대입된다
        while (clock() - start < delay) 
// 다시 호출된 clock() 함수의 리턴값에서 선행 clock() 함수의 값을 빼내 지금부터 시간의 경과를 사용자가 요구한 지연 시간, delay와 비교하여 그 값에 이르기까지 프로그램을 지연한다.
                ;   / 세미콜론을 잊지 말자.
        cout << "종료\a\n";
        return 0;
}

 

Windows.h를 이용한 sleep이라는 방법도 존재한데 이와 같이 구현하는 것도 관리 면에서 괜찮다고 볼 수 있다.
이유는 Windows.h의 불필요한 라이브러리를 불러오지 않기 때문이다. Windows.h와는 달리 ctime은 기본 라이브러리에 해당된다.

 


1. 참고자료(Reference)

 

1. http://dexion.tistory.com/24, Accessed by 2014-05-17

반응형
728x90
300x250

[C++] 화면 클리어 = system("cls")

아래의 코드 처럼 구현하면 system("cls")를 사용할 수 있습니다.

이 코드를 사용하면, 콘솔의 화면에 작업한 내용을 지울 수 있습니다.

 

 

#include <stdlib.h>

void main()
{
   system("cls");
}
반응형
728x90
300x250
[Windows 2008] iSCSI 저장소 구축

 

아래의 영상은 Microsoft WIndows 2008에서 iSCSI 저장소를 구축하는 방법에 대해서 잘 소개하고 있습니다.

 


1. iSCSI 저장소 구축 / 시연 영상

 

 

영상 1-1) How to Create ISCSI Storage using Windows Server 2008 R2 CpocLab Videos, TimeNet CpocLab

 

인터넷 기반의 SCSI(Internet SCSI)라는 개념의 Storage를 구축하는 방법입니다.

iSCSI는 말 그대로 인터넷 상에서 스토레지를 운영하는 것입니다.

 

예를 들면, 동작 다이어그램을 아래와 같습니다.

 

 

Fig 1-2) iSCSI 구성의 예

 

[첨부(Attachment)]

diagram.7z

 


2. 실제 사용의 예

 

외부에 나갔을 때에도 마치 실제 하드디스크를 부착한 것처럼 사용할 수도 있습니다.

또 디스크레스(Diskless, 하드 없는 시스템)에서도 가능합니다.

반응형
728x90
300x250

[C++] GCC - Windows에 관한 사항

 

이 글은 http://gcc.gnu.org에 들어가서 확인한 글입니다.
읽어보기 바랍니다.


1. GCC.gnu.org에서 확인한 글

 

 

 

그림 1-1) GCC.gnu.org의 글

 

http://gcc.gnu.org/install/specific.html#windows

 

Windows 32bit 기반에선 Cygwin와 MinGw를 이용하면 됩니다.

 


2. 윈도우에서 사용이 가능한 MinGW

 

윈도우에서 사용이 가능한 G++ 컴파일러입니다.

 


그림 1-2) GCC.gnu.org의 글

 

64bit 기반에선 mingw-w64-Runtime을 이용하면 됩니다. 단, 아이테니엄 계열은 윈도우에서 지원하지 않는다고 합니다.

 

 

MinGw(소스포지) - 오픈소스

http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/

반응형
728x90
300x250
[C++] 크로스플렛폼 IDE - CodeBlocks

 

 

리눅스, 윈도우, 등 환경에 관계없이 사용할 수 사용할 수 있는 IDE 도구입니다.

http://www.codeblocks.org/downloads/

 

 

컴파일러는 GCC 이외에도 자주 사용하는 컴파일러를 연결시켜서 사용하면 됩니다.
즉, 다양한 컴파일러 환경에서 이용할 수 있습니다.

 


1. 용어

 

번호

용어(Words)

한글 읽기

의미(Means)

1

IDE
(Integration Development Environment)

인티그레이션 데벨로프맨트 인바이어먼트

통합 개발 환경 도구

 

 

 

 

 

반응형
728x90
300x250

[C++] 문자열 / 입력 버퍼 제거

 

fflush는 MS Visual Studio에서는 지원하는 버퍼 제거 함수이다.

대부분 책에는 fflush를 이용하여 제거하라고 한다.

 

하지만, 리눅스에선 이 명령어를 사용하면 죽는다. (Gcc를 통해 확인해보면 알게 될 것이다.)

 

C언어에서의 표준 버퍼 제거 명령어는 Getchar()를 사용하는 것이다.

C++에서는 cin.sync()를 통해 버퍼를 제거할 수 있다고 한다.

 


1. 참고자료(Reference)

 

1. http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=523010&ref=523010, Accessed by 2014-05-04

2. http://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer, Accessed by 2014-05-04

반응형

+ Recent posts