Dev/Java

[java] 간단한 계산기 만들기

창문닦이 2019. 1. 21. 22:12

간단한 계산기 만들기


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException; //이클립스에선 어디서 import해야 되는지 자동으로 툴이 작성해줌

class Test1  {

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

                    

                     BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

/*            

               System.in: stream .컴퓨터 간의 통신시 사용하는 파이프라인 개념. 키보드로 입력한 1byte 데이터 인식

               String a

               System.out.printf("첫번째 입력?"); //50

               a = br.readLine();    

               num1 = Integer.parseInt(a);

               단계를 하나로 만들어도 ~ 아래처럼!

*/

                    

                     int num1, num2 ;

                     System.out.printf("첫번째 입력?");

                     num1 = Integer.parseInt(br.readLine());

                     //num1 = Double.parseDouble(br.readLine());

                    

                     System.out.printf("두번째 입력?");

                     num2 = Integer.parseInt(br.readLine());

                     //연산

                     //int num3 = num1 + num2;

                     //System.out.println(num3);

                    

                     //출력+연산

                     System.out.printf("%d + %d = %d\t",num1,num2,(num1+num2));       

                     System.out.printf("%d - %d = %d\n",num1,num2,(num1-num2));       

                     System.out.printf("%d * %d = %d\t",num1,num2,(num1*num2));       

                     System.out.printf("%d / %d = %d\n",num1,num2,(num1/num2));       

                     System.out.printf("%d %% %d = %d\n",num1,num2,(num1%num2)); //나머지를 구할땐 % 

                     System.out.println("-------------------------------------------");

                    

                     //숫자를 부등호로 비교를 하면 true(1), false(0) 문자가 생성.

                     System.out.println("num1>num2:" + (num1>num2) ); 

 //println에서는 부등호를 인지하는데 혼동이 올수있음. 괄호로 묶어주기

                     String str;

                     //삼항연산자 a ? true : false -> a값이 true 앞에거 실행 false 뒤에거 실행

                     str = num1%2==0?"짝수":"홀수";

                     //조건의 개수에 따라 증가 가능. 조건이 세개니까 2 연산. 자료형에는 하나의 값만 저장

                     str = num1>0?"양수":(num1<0?"홀수":"0");           

                     //A &&(and) B

                     //A ||(or) B

                     // == 같냐 != 같지않냐

                     //윤년 구하는 공식

                     str = num1%4==0 && num1%100!=0 || num1%400==0? "윤년":"평년";

                    

                     System.out.println(num1 + ":" + str);

           }

}


 실행 결과




밑변(width)과 높이(height)를 입력받아 삼각형의 면적(area)을 구하기


import java.io.*;

class Test2 {

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

                     //선언

                     int width, height;

                     double area;

                    

                     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                    

                     //입력

                     System.out.printf("밑변?");

                     width = Integer.parseInt(br.readLine());

                     System.out.printf("높이?");

                     height = Integer.parseInt(br.readLine());

                     //연산

                     //area = (double)width * (double)height / 2 ; //강제 형변환

                     area = width * height / 2.0 ; //암시적 형변환 : 자바 실행시 소수점을 만나면 실수형으로 저장.

                     //출력

                     System.out.printf("넓이: %g", area);

           }

}

 

 실행 결과




실수형 자료형


class Test3 {

           public static void main(String[] args) {

                    

                     float f = 0//실수형 실제 저장값은 0.0

                     double d = 0//실수형 실제 저장값은 0.0

                    

                     //반복문 for (초기값조건문증감)

                     //i++ -> i=i+1

                     for (int i=1;i<=100000;i++){

                                = f + 100000;

                                = d + 100000; 

                     }

                    

                     System.out.println("float: "+ (f/100000));

                     System.out.println("double: "+ (d/100000));

                     //실수를 연산할때 float 데이터의 손실이 생길  있음.-> double 연산하는게 좋다

           }

}


 실행 결과




영대소문자 변환시키기 

 

import java.io.IOException;

class Test4 {

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

/*            

               boolean : 논리형

               char : 문자형. 기본값 \u0000 유니코드. 표현범위 0~65535

               ASCII CODE : A -> 65 a -> 97 영대소문자로 바꿔야하면 +-32

               enter : 두개의 명령어로 구성되어있음 10(LF-커서를 왼쪽정렬), 13(CR-커서가 밑으로 내려감)

               char ch = 'a'; // 작은따옴표사용. 글자만 저장 가능. 'abc' 오류 발생. ch에는 97이라는 아스키코드가 저장되어있음

*/       

                     //선언

                     char ch,result;

                     //입력

                     System.out.print("한개의 문자?");

/*

               ch = System.in.read(); 한개의 문자만 읽어냄.

               읽게되면 97이라는 아스키코드를 인식. int타입이라 char 저장안됨

               api 확인하면

               입력 스트림로부터 데이터의 다음의 바이트를 읽어들입니다. 값의 바이트는,0 ~ 255 범위의 int 로서 돌려주어집니다

               adsflsdflksd 이렇게 입력하더라도 'a' 맨앞하나만 저장 가능

*/

                     ch = (char)System.in.read(); //문자형으로 강제 형변환

                    

/*            

               System.out.println(ch);

               System.out.println(Integer.toString(ch)); //String으로 바꿔서 그대로 보여달라

               사용자가 대문자를 입력했을때 아스키코드 범위 ch>=65 && ch<=90

               (char)(ch+32) 형변환을 해주지 않는다면 result 문자형이므로 오류 발생

*/

                     result = ch>=65 && ch<=90 ? (char)(ch+32) : (ch>='a'&&ch<='z' ? (char)(ch-32) : ch);

                    

                     System.out.println(ch + ":" + result);

           }

}



 실행 결과




if문 이용하여 짝수 홀수 구분하기


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;

class Test5 {

          

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

                               

                     //제어문 : if, switch, for, while, do~while

                     //반복문 : for, while, do~while

                     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                    

                     int num;

                     String str = ""; //null

                     System.out.print("수입력?");

                     num = Integer.parseInt(br.readLine());

                     //if(조건절)

                     //단일 IF

/*

               if 작성시 중괄호 안이 한줄이면 중괄호 생략 가능

               else 없는 단일 If문은 초기화를 하지 않으면 오류 발생.

               if(num%2==0){

                       str = "짝수";

               }

               if(num%2!=0){

                       str = "홀수";

               }

*/

                     //if~else

                     if(num%2==0) {

                                str = "짝수";

                     }else{

                                str = "홀수";

                     }

                     System.out.println(num + ":" + str);

           }

}


 실행 결과




BufferedReader


import java.util.Scanner;

class Test6 {

           public static void main(String[] args) {

                               //java에서 사용자가 입력한 값을 읽는 방법은 2가지 존재.

                                //BufferedReader , Scanner

                                Scanner sc = new Scanner(System.in);

                                //BufferedReader 다른 특성있음! -> Test7

                                //단락문자를 구분하는 기능.

                                //기술문제로 Scanner 나온 경우는 드물다

                                //선언

                                String name;

                                int kor;

                               

                                System.out.print("이름이 뭐니?"); //수지

                                name = sc.next();

                                System.out.print("국어?"); //60

                                kor = sc.nextInt(); //형변환도 가능

                                String pan; //else if 끝나는 경우 초기화를 시켜줘야 .

                               

                                //else~if문은 조건이 여러개 일때.

                                //조건이 여러개일땐 위쪽에 써주는게 좋음

                                if(kor==100 || kor>=90){

                                          pan = "";

                                }else if(kor>=80){

                                          pan = "";

                                }else if(kor>=70){

                                          pan = "";

                                }else if(kor>=60){

                                          pan = "";

                                }else{

                                          pan = "";

                                }

                               

                                System.out.println(name + ":" + kor + ":" + pan );

                               

                                sc.close();

           }

}

 

  실행 결과




Scanner 


import java.util.Scanner;

class Test7 {

           public static void main(String[] args) {

                     //단락문자의 패턴을 사용해 분류

                     //디폴트 단락은 공백

                     Scanner sc = new Scanner(System.in); //sc객체 생성. 끝나고 sc.close(); 작성해줘야

                     String name;

                     int kor, eng, mat;

                     //suzi 40 60 70 - 공백으로 데이터 구분해서 입력

                     //System.out.print("이름 국어 영어 수학?");

                     //연결된 하나의 값이지만 공백을 자동으로 인식하는게 Scanner 특성 - 덕에 한꺼번에 입력할 있다.

                     //suzi,40,60,70

                     System.out.print("이름 국어 영어 수학?");

                     //공백이 아닌 다른 구분 단위를 사용하고 싶을때 사용 : 콤마로 부분된 데이터 읽기

                     sc = new Scanner(sc.next()).useDelimiter("\\s*,\\s*");

                     //suzi,40,60,70 통채로 읽어낸

                     //메소드 .useDelimiter("\\s*,\\s*");  공백없이 , 구분해라 : 정규화 표현식

                     //공백을 기본으로 인식하기 때문에 'suzi, 40, 60, 70' 작성하면 오류 발생.

/*            

               api 확인하기

               String input = "1 fish 2 fish red fish blue fish";

               Scanner s = new Scanner(input);

               s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");

               MatchResult result = s.match();

               for (int i=1; i<=result.groupCount(); i++)

         System.out.println(result.group(i));

               s.close();

*/                 

                     name = sc.next(); //공백을 만나면 멈추고 거기까지의 값을 저장하므로 suzi name 저장됨

                     kor = sc.nextInt();

                     eng = sc.nextInt();

                     mat = sc.nextInt();

                     sc.close();

                     System.out.println(name + ":" + (kor+eng+mat)+"");

           }

}

 


 실행 결과



'Dev > Java' 카테고리의 다른 글

[java] 배열, 달력만들기  (0) 2019.01.21
[java] for문, switch문  (0) 2019.01.21
[java] 반복문  (0) 2019.01.21
[java] 기초  (2) 2019.01.21
[java] 자바 공부 시작  (0) 2019.01.21