2015년 10월 21일 수요일

java 강의 3일차 - 삼항연산자

java 강의 3일차 - 삼항연산자
삼항연산자
조건식 ? 처리 (참) : 처리(거짓)

===============================================

Build 관리 툴 - 컴파일과 실행을 자동으로 처리해주는 프로그램

ex) ANT 프로그램 http://ant.apache.org/ 

압축만 풀어서 준비해주시고,
제어판 - 시스템 및 보안 - 시스템 -고급시스템설정 에들어가줍니다.
환경변수의 시스템변수에 ant_home 이라는 변수를 하나 새로만들어 
ant프로그램의 상위폴더를 추가해줍니다.
ex) C:\Users\xxxx\Downloads\apache-ant-1.9.6-bin\apache-ant-1.9.6
그후 path 변수에 편집을눌러 %ant_home%\bin; 을추가해줍니다.

===============================================

ant프로그램을 테스트하기위해 노트패드에 한번 테스트를 해봅니다.

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

public class Antest{
public static void main(String args []){
System.out.println("***************테스트****************");
}
}

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

ant프로그램이 알아서 인공지능처럼일을할수는없습니다.
스크립트를 짜서 기본적인 명령을 작성해야합니다.
스크립트는 .xml 파일로 작성을해야합니다.

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

<?xml version="1.0"?>
<!-- build.xml-->

<project>                

</project>               

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

<> 를 하나의 태그라고 부릅니다.
반드시 시작태그와 마침태그가 있어야합니다.
project라는 태그를 만들었는데, 태그를마칠때는 /project 로 
프로젝트태그를 끝낸다는것을 명시하여야합니다.

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

<?xml version="1.0"?>
<!-- build.xml-->

<project default="" basedir="E:\serin\javase\03Control">

</project>


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

project 태그 안에 기본정보를 넣어줍니다..
basedirectory 에 내가 사용할 폴더 ; 자바파일들이저장되는폴더
를 지정해줍니다.

-------------------------------------------------------------------------------------
<?xml version="1.0"?>
<!-- build.xml-->

<project default="" basedir="E:\serin\javase\03Control">
<target name="compiler">
<javac></javac>
</target>
</project>

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

이 xml파일이 할역할을 타겟이름에 적당히 적어줍니다.
아무거나상관은없습니다.
이번의 목적은 컴파일이니 컴파일러 라고 적어놓고, 
컴파일을할떄 javac프로그램을 사용할거니깐 javac태그를 만들어줍니다.


-------------------------------------------------------------------------------------
<?xml version="1.0"?>
<!-- build.xml-->

<project default="" basedir="E:\serin\javase\03Control">
<target name="compiler">
<javac srcdir="" destdir=""></javac>
</target>
</project>

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

srcdir 은 내가 컴파일 할 파일이 있는경로,
destdir은 컴파일 한 파일이 보내질 경로를 지정할수있습니다.
지금은 따로 지정하지않고, basedir에 지정된 기존폴더를 사용하겠습니다.
-------------------------------------------------------------------------------------

<javac srcdir="${basedir}" destdir="${basedir}"></javac>

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

${ } 는 xml안에서 변수를 사용하겠다는 의미입니다.

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

<?xml version="1.0"?>
<!-- build.xml-->

<project default="compiler" basedir="E:\serin\javase\03Control">
<target name="compiler">
<javac srcdir="${basedir}" destdir="${basedir}"></javac>
</target>
</project>

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

<!-- --> 이부분에 주석을 달수 있는데, 혹시 주석을 한국어로 다시려면
최상위태그에
<?xml version="1.0" encoding="euc-kr"?> 로 인코딩을 추가해줍니다

------------------------------------------------------------------------------------
<?xml version="1.0" encoding="euc-kr"?>
<!-- build.xml-->

<project default="compile" basedir="E:\serin\javase\03Control">
<target name="compile">
<javac srcdir="${basedir}" destdir="${basedir}" includeantruntime="false"/>
</target>
</project>

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

<javac> 태그를보면 하나의 태그사이에 아무것도없습니다.
그러면 끝태그를 함축해서쓸수있습니다.

<   ><  /> 라는 태그가있을때, 중간에 아무태그도없으면 
<    />로 끝낼수도있습니다.

-------------------------------------------------------------------------------------
이제 소스파일과 클래스파일을 따로저장하는 방법을 알아보겠습니다.
폴더를 두개 만들어줍니다.
보통 관례적으로,
소스파일은 src폴더, 결과물파일은 bin폴더 라고 만듭니다.

cmd 에서 컴파일을할떄 지금까지는
javac 파일명 이라고하는데, 이제는
javac -d 라고 명령어를 적어줍니다. -d는 디렉토리를 지정하겠다는뜻입니다.

java -d E:\serin\javase\03Control\bin 라고 적을수도있지만,
java -d ../bin 파일명 이라고 적을수도있습니다.

. 은 현재폴더 .. 은 상위폴더를 의미합니다. 

이제 컴파일을 실행하는 스크립트가 완성됐습니다.
-------------------------------------------------------------------------------------

이제 컴파일 후 실행까지 하는 스크립트를 짜보겠습니다

<?xml version="1.0" encoding="euc-kr"?>
<!-- build.xml-->

<project default="run" basedir="."><!--현재위치를 . 으로 대체하여사용할수있음-->
<property name="src.dir" value="${basedir}/src" />
<target name="compile">
<javac srcdir="${src.dir}" 
destdir="${basedir}/bin" 
includeantruntime="false"/>
</target>
<target name="run" depends="compile">
<java classname="Antest">
<classpath>
<pathelement path="${basedir}/bin"/>
</classpath>
</java>
</target>
</project>

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

베이스디렉토리의 이름을 간단하게 해주기위해

property태그를 만들어서 밸류값으로 ${basedir}/src 라는걸 src.dir 로 지정하도록 해줍니다.

궁극적으로 실행되어야 하는 목표가 run 이므로, 프로젝트 디폴트를 run으로 바꿔주고, 밑에도 비슷하게 짜줍니다.
실행할 class이름이 Antest이므로 지정해주시고, 
class경로를 지정합니다.
타겟의 이름을 run으로 만들었기떄문에 run이 실행되지만, 
컴파일이 필요하기떄문에 타겟태그에 depends="compile"을 덧붙여줍니다.

실행순서가 디폴트런-타겟런-디펜드 컴파일- 타겟컴파일- 런 으로진행되는겁니다.

===============================================

어제 에 이어 제어문을 배워보겠습니다.

제어문 ( Cpmtrol Statement )

1.조건문 if
a. if (조건식){             
문장;
문장;
}
-----------------------------

b.       if (조건식){
문장;
문장;
}
else{
문장;
}
------------------------------
c. if (조건식){
문장;
문장;
}
else if{
문장;
}
else{
문장;
}
-----------------------------------
d. nested if

if조건식을 포함하는 if조건식

if (조건식){
if(조건식)
문장;
else
문장;
}
else {
if(조건식)
문장;
else
문장;
}

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

public class IfTest1{
public static void main(String args[]) throws java.io.IOException{
/*System.out.print("숫자 입력 : ");
int num = System.in.read()-48;
*/
/*if((num%2)==0) //넘에붙은 조건문이 0과같다 + if 는 -과같냐?
System.out.println("짝수입니다." );
if((num%2)!=0)
System.out.println("홀수입니다.");
*/
/*if((num%2)==0)
System.out.println("짝수입니다");
else
System.out.println("홀수입니다");
*/
/*
int avg = 78;
char point = ' ';
if(avg >= 90)
point = 'A';
else if(avg >= 80)
point = 'B';
else if(avg >= 70)
point = 'C';
else if(avg >= 60)
point = 'D';
else 
point = 'F';
System.out.println("학점 : " + point);
*/
/* int num1=10, num2=7, num3=8;
if(num1>num2){
if(num1>num3)
System.out.println("num1이 제일크다");
else //num1<num3
System.out.println("num3이 제일 크다");
}
else{//num1<num2
if(num2 > num3)
System.out.println("num3이 제일 크다");
else
System.out.println("num2가 제일 크다");
}
*/
//id:x , pw:7
/* System.out.print("ID : ");
char id = (char)System.in.read();
System.out.print("Password : ");
char pw = (char)System.in.read();
if(id != 'x'){
if(pw != '7')
System.out.println("둘 다 틀림");
else 
System.out.println("아이디 만 틀림");
}
else{
if(pw !='7')
System.out.println("패스워드 만 틀림");
else
System.out.println("로그인 성공");
}
*/
}
}

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














2. switch

switch(변수 또는 수식){
case 값 또는 '값:
문장;
문장;
case 값 또는 '값
문장;
case 값 또는 '값:
문장;

해당 변수에 스위치가 들어간다고생각하면됩니다.
case의 마무리마다 break; 를 써주면,
해당케이스에 도달하는순간 그다음은 넘겨버리기때문에
변수에 해당하는 값 만 출력할수있습니다.


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

public class Switch
{
public static void main(String args [])throws java.io.IOException
{
System.out.println("과일코드 : ");
char num = (char)System.in.read();
switch(num) //정수형만 가능
{
case '1' :
System.out.println("사과");break;
case '2' :
System.out.println("배");break;
case '3' :
System.out.println("포도");break;
case '4' :
System.out.println("감");break;
default:
System.out.println("해당없음");break;
}
}

}


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

도스창에 숫자를 입력하고 그숫자에맞는 과일 이름이 나오도록 만든 코드입니다.
스위치타입문장에, 글자를 입력할수 있게하고 글자를 글자그대로 인식하도록 (char)를 씌워줬습니다.
밑의 예제에는 ' 홑따옴표 를 써서 글자하나로 인식하도록 했습니다.


===============================================
out print 는 모니터에 출력되는 값만 나옵니다/
in read 를 써서 문자를 입력할수있는 간단한 방법입니다.
다만 read를 써서는 한글자 씩 밖에 인식하지 못합니다.

-------------------------------------------------------------------------------------
public class InputTest{
public static void main(String args []){
System.out.println("한 문자 입력 : ");
int data = System.in.read();
}
}

-------------------------------------------------------------------------------------
시스템아웃풋 만 쓰다가 이제 인풋을 해보겠습니다.
read 라는 명령어는 키보드의 키 하나만 읽어드릴수있습니다.

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

public class InputTest{
public static void main(String args []) throws java.io.IOException{
System.out.print("한 문자 입력 : ");
int data = System.in.read();
System.out.print("당신이 입력한 문자는 " + data + "입니다");
}
}

-------------------------------------------------------------------------------------
throws java.io.IOException 는 입력을 할때는 무조건쓴다고보셔도됩니다.
자바프로그램에서 스크립트를 검수해주는 명령입니다.
입력값에 int data를 쓴 이유가있습니다.
키보드 알파벳이 아스키코드로 10진수처리되기때문에 int로 처리한겁니다.
-------------------------------------------------------------------------------------
char data = (char)System.in.read();
-------------------------------------------------------------------------------------
이렇게  캐릭터타입으로 만들고 뒤쪽을 캐스팅해줘도됩니다.

비슷한 예로
------------------------------------------------------------------------------------
System.out.print("한 숫자 입력 : ");
int num = System.in.read();
System.out.print("당신이 입력한 숫자는 " + (char)num + "입니다");
-------------------------------------------------------------------------------------
이렇게 적어줘도 됩니다.

뒤쪽에 (char)로 캐스팅을 안해주시면 아스키코드로 출력되니 주의하세요




수고하셨습니다.




연습문제

1.if else 예제 (짝수 홀수)
를 삼항연산자 로 바꿔서 처리


2.데이터를 입력받아 그 값이
'a','b','c', 이면 정답 이라고 출력하고 그렇지않으면 오답 이라고 출력하라


3.입력받은 값이 문자 이면 문자라고 출력하고, 그외의 데이터는 기타 라고 출력한다.


4.입력받은 값이 소문자 이면 소문자 라고 출력하고, 대문자이면 대문자 라고 출력하고, 숫자 라면 숫자라고 출력하고, 그외의 데이터는 기타 라고 출력한다.


5.간단한 전자계산기 프로그램
연산자 +-*/
숫자1 : 3
숫자2 : 2
결과 3+2=5








1.
public class HW1
{
public static void main(String args[]) throws java.io.IOException
{
System.out.println("if else 예제 (짝수 홀수)를 삼항연산자 로 바꿔서 처리하시오.");
System.out.println("숫자 입력 : ");
char num = (char)System.in.read();
System.out.println(num + "은(는)" + (num % 2 == 0 ? "짝수" : "홀수") + "입니다." );
}
}



2.


public class HW2
{
public static void main(String args[]) throws java.io.IOException
{
System.out.println("데이터를 입력받아 그 값이 'a','b','c', 이면 정답 이라고 출력하고 그렇지않으면 오답 이라고 출력하라.");
System.out.println("알파벳을 입력하세요 : ");
int data = System.in.read();
if(data=='a'||data=='b'||data=='c')
System.out.print("정답");
else 
System.out.print("오답");

}
}


3.
public class HW3
{

public static void main(String args[]) throws java.io.IOException
{
System.out.println("입력받은 값이 문자 이면 문자라고 출력하고, 그외의 데이터는 기타 라고 출력해보자.");
System.out.println("문자를 입력하세요 : ");
int data = System.in.read();
//System.out.print(data);

if((data >= 65 && data <= 90)||(data >= 97 && data <= 122))
System.out.print("문자");
else 
System.out.print("기타");
}
}

4.

public class HW4
{

public static void main(String args[]) throws java.io.IOException
{   
System.out.println("입력받은 값이 소문자 이면 소문자, 대문자이면 대문자, 숫자 라면 숫자라고 출력하고, 그외의 데이터는 기타 라고 출력해보자.");
System.out.println("문자를 입력하세요 : ");
int data = System.in.read();
//System.out.print(data);

if(data >= 65 && data <= 90)
System.out.print("대문자");
else if(data >= 97 && data <= 122)
System.out.print("소문자");
else if(data >= 48 && data <= 57)
System.out.print("숫자");
else 
System.out.print("기타");
}
}

5.

public class HW5
{
public static void main(String args[]) throws java.io.IOException
{
System.out.println("x값이 3이고, y값이2 라고 할 때 x 와 y의 사칙연산을 구하여라.\n +, -, *, /, 중 선택하세요.");
char C = (char)System.in.read();
System.out.println("사칙연산 기호 : " + C );
System.out.println("해당 기호의 수식은");
switch(C)
{
case '+' :
System.out.println(" 3 + 2 = " + (3+2));break;
case '-' :
System.out.println(" 3 - 2 = " + (3-2));break;
case '*' :
System.out.println(" 3 * 2 = " + (3*2));break;
case '/' :
System.out.println(" 3 / 2 = " + (3.0/2.0));break;
default:
System.out.println("올바른 수식이 아닙니다.");
}
}
}

댓글 없음:

댓글 쓰기