자바 스캐너 클래스를 이용해서 입력을 받아보았습니다.
스캐너를 사용하기 위해서 util 패키지를 import 해야합니다
import java.util.Scanner;
그 다음 스캐너 클래스를 쓰기위해 객체를 생성해주고
Scanner sLine =new Scanner(System.in);
Scanner sNum =new Scanner(System.in);
그리고 스캐너의 입력을 위해 메소드를 작성해 줍니다
System.out.println("과목명을 영문으로 입력하시오");
String str1=sLine.nextLine();
System.out.println(str1);
입력을 위한 메소드는 자료형에 따른 종류가 존재합니다
String str1=sLine.nextLine(); //for String
int price = sNum.nextInt(); //for Integer
이건 제가 쓴 극히 일부고 좀더 다양한 종류는 자바 공식문서 홈페이지에서 찾아 볼 수 있습니다
https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#skip-java.util.regex.Pattern-
마지막으로 입력이 끝나면 OS자원을 다시 되돌리면 끝입니다.
sLine.close();
sNum.close();
제가 쓴 방식과 다르게
Scanner s =new Scanner(System.in);
String s1 = s.nextLine();
int s2 = s.nextInt();
float s3 = s.nextFloat();
System.out.println(s1+" "+s2+" "+s3);
s.close();
이런 식으로 하나의 Scanner 객체로도 충분하기 때문에 하나의 객체로 키보드 입력을 처리할 수 있습니다.
결과
과제로 받았던걸 보면
원의 둘레 면적 구의 체적을 구하는 내용 이군요.
공식만 알면 나머지는 쉽게 했던 기억이 나네요.
Scanner rNum =new Scanner(System.in);
System.out.println("반지름을 입력하시요");
int r=rNum.nextInt();
float rnd = 2*3.14f*r;
float siz = r*3.14f*r;
float wsizs = 4/3*3.14f*r*r*r;
System.out.println("원의 둘례:"+rnd);
System.out.println("원의 면적:"+siz); //println에서는 자리수 지정이 불가함!!
System.out.println("구의 체적:"+wsizs);
연산자를 사용해 보았습니다.
//a=a+1 = a+=1 a에 1더해서 a에 저장
//a=a-1 = a-=1 a에 1빼서 a에 저장
//a=a*2 = a*=2 a에 2곱해서 a에 저장
//a=a/2 = a/=2 a에 2를 나누어 a에 저장
//a=a%2 = a%=2 a에 2나누어 나머지값 a에 저장
//a++, ++a, a-- , --a 1을 더하거나 빼서 저장
이러한 식으로 다양한 연산자가 존재합니다.
코드
int p=10/4; //정수/정수=정수 정수/실수=실수 실수가 포함되면 실수 결과 값임
float q=10/4f; //실수/정수=실수 실수/실수=실수 '='은 오른쪽에 값을 왼쪽에 저장하는 배정 연산자
float o=10/4; //뒤에 f를 안붙히면 나머지를 표기안함
float y=4;
y=q*y;
int a=5;
a=a+1;
System.out.println(a);
a=-a;
System.out.println(a);
int s=5;
s++;
System.out.println(s);
s=5;
s+=2;
System.out.println(s);
System.out.printf("%d %4.2f %f\n",p,q,o);
System.out.println(y);
결과
여기서 하나 재밌는 점은 a=-a는 a를 음수로 바꿔 저장하는것도 가능하다는 겁니다.
그리고 증감 연산자인데 ++와 --는 1을 더하거나 뺀다는 뜻 입니다. 근데 변수 앞에 붙어있냐 뒤에 붙어 있는지에 따라 차이를 보이는 데 앞에 ++가 있으면 표현식에 사용되기 전에 1이 증가합니다. 뒤에 있으면 이 표현식에 사용되며, 그 후에 1 증가합니다.
예시를 보이자면
int n=3;
int m=5;
System.out.println(m++*2+ ++n); //14
System.out.println(m++*2+(++n)); //17
System.out.println(m+","+n); //7,5
순서를 살펴보면 5++는 표현식이 끝나면 5에 1을 더합니다 그러니 아직 표현식에서는 5인 상태를 유지합니다.
그리고 2를 곱합니다. ++3이므로 표현식이 사용되기전에 1을 더합니다.
그러므로 10 + 4 =14가 반환됩니다.
두번째는 첫 번째 문장과 유사하지만, 여기서는 ++n이 괄호 안에 있으므로 n이 표현식에 사용되기 전에 1이 증가합니다.
m은 이전의 연산에서 6이 되었으므로, 6 * 2 = 12가 되고, 그런 다음 m은 7이 됩니다.
n은 현재 4이므로, 1이 추가되어 5가 됩니다.
따라서 결과는 12 + 5 = 17이 됩니다.
이번에는 문자와 숫자 조합에 따른 결과 입니다.
int z=2;
int x=3+z; //숫자+숫자
System.out.println(x);
결과: 5
숫자와 숫자를 더하면 당연히 숫자가 나옵니다.
String str1="hi"+z; //문자열+숫자
System.out.println(str1);
결과: "hi2"
문자와 숫자를 더하면 문자열이 나옵니다.
str1=z+"hi"; //숫자+문자열
System.out.println(str1);
결과: "2hi"
숫자 + 문자열도 마찬가지
str1="hi"+"world"; //문자+문자
System.out.println(str1);
결과 : "hiworld"
문자 + 문자는 문자열이 나옵니다.
헷갈리거나 재밌는점은 여기 부터인데
System.out.println(2+3+4+"");
System.out.println(""+2+3+4);
결과:
"9"
"234"
숫자가 문자보다 먼저 왔으므로 덧셈을 끝낸뒤 문자열을 반환하고
두번째는 문자열이 먼저왔으므로 숫자를 문자열 처럼 연결만 하고 문자열로 반환 되는 겁니다.
즉 빈문자열 하나가 맨 앞에 왔으므로 +가 더하기 연산자가 아닌 연결 연산자가 됩니다.
순서에 따라 아예 다른 결과를 만듭니다.
그럼 문자열 + 덧셈은 불가능 한 걸까요?
아닙니다 괄호를 통해 계산을 사용할 수 도 있습니다.
System.out.println("결과값은"+(z+x)+"입니다");
결과: "결과값은7입니다"
이런식으로 말이죠
크기 비교를 위한 연산자를 알아보겠습니다.
char char1 = 'a';
char char2 = 'b';
boolean res1 = (char1>char2);
System.out.println(res1); //false
System.out.println(char1>char2); //false
char a,b 를 변수로 저장했습니다. 그리고 그 두개의 크기를 비교하는 비교 연산자인데 a>b를 boolean과 비교했을때
둘다 false를 반환합니다. 이러한 결과가 나오는 이유는 사전에 나오는 순서별로 크기를 생각하면 됩니다. 사전에 먼저 나오면 작은것으로 구별합니다
ex)"a"<"b" "a"<"aa"
"Hello"<"hello"
"Hello"<"Hello "
ASCII코드로인해 순서가 정해집니다
//""<"공백"<"0~9"<"A~Z"<"a~z"
boolean q=true;
boolean w=false;
System.out.println(w&&w); //false
System.out.println(w&&q); //false
System.out.println(q&&w); //false
System.out.println(q&&q); //true
System.out.println(w||w); //false
System.out.println(w||q); //true
System.out.println(q||w); //true
System.out.println(q||q); //true
System.out.println(a>=5 && a<7); //true
논리 연산자는 트랜지스터에서도 사용하는 연산자인데
&&는 and라고도 하며 비교하는 대상이 두개가 true면 true를 반환합니다 하나라도 false면 false를 반환합니다.
||는 or 라고도 하며 비교하는 두 대상중 하나라도 참이면 참을 반환합니다 덧셈과 곱셈을 생각하면 편한데 and는 곱셈 or는 덧셈이라고 생각하면 됩니다.
논리 곱셈 ex) 1 x 1 = 1 , 1 x 0 = 0
논리 덧셈 ex) 1 + 1 = 1 (2진수 올림값 1) , 1 + 0 = 1
지금까지 몇개 안했는데 처음에 배우는 단계였는지 간단하지만 많은걸 하게 됩니다. 이때부터 어렵다고 느낄 수도 있지만 하나씩 다시 살펴보니 별게 아닌거 같네요 ㅎㅎ 다음에도 열심히 쓰겠습니다. 틀린점 있으면 알려주세요