간단한 계산기 만들기
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 = f + 100000;
d = 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 |