2015년 10월 21일 수요일

java 강의 7일차 - 배열 , String

java 강의 7일차 - 배열 , String



------------------------------------------------------------------------------
배열 실습


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


public class ArrayTest1 {

public static void main(String[] args) {
// TODO 배열의 기초1

int kor=98, eng=89, mat=77; //변수들을 연결하여 1차원배열로 만든다.
//int eng=89;
//int mat= 77;
/* int arr1[]=new int[3]; //변수들을 저장하기위한 3개의 메모리 들을 한줄로 붙이겠다 1차원으로만들겠다 여러개의 정수형변수를 하나로 묶었다. 라는뜻
arr1[0] = 98;
arr1[1] = 89;
arr1[2] = 77;
*/
int arr1[] = {98, 89, 77};//위의 4줄을 한줄로 요약시킴
for(int i=0; i<arr1.length; i++){
System.out.println(arr1[i]);
}
}

}




---------------------------------------------------------------------------------
package prjArray;

public class Sungjuk_v1 {


 /* public static void main(String[] args) {
// TODO 1차원 배열을 이용한 성적표 예제
int no[] = {1,2,3};
int kor[] = {98,76,85};
int eng[] = {90,55,73};
//------------------------------데이터 준비 끝

int tot[] = new int[3];
int avg[]= new int[3];
char grade[]= new char[3];
int rank[] = new int[3];
//평균, 학점, 등수 구하기 // 등수를 1등을기준으로잡는다 ranl[0]=1
//출력
System.out.println("학번\t국어\t영어\t총점\t평균\t학점\t순위");
System.out.println("***************************************");
for (int i =0;i<no.length;i++)
System.out.println(no[i] + "\t" + kor[i] + "\t" + eng[i] +"\t" +  tot [i] + "\t" + avg[i] + "\t" + grade[i] + "\t" + rank[i]);
tot[0] = kor[0] + eng[0];
tot[1] = kor[1] + eng[1];
tot[2] = kor[2] + eng[2];
//정렬 성적순으로 내림차순
for (int i=0; i<no.length; i++);
temp = no[j];
no[j] = no [j+1];
no [j+1] = temp;
temp = kor[j];
kor [j] = kor [j+1];
kor [j+1] = temp;
temp = eng[j];
eng[j] = eng [j+1];
eng [j+1] = temp;

temp = tot[j];
tot[j] = tot [j+1];
tot [j+1] = temp;
temp = avg[j];
avg[j] =avg [j+1];
avg [j+1] = temp;
temp = grade[j];
grade[j] = grade [j+1];
grade [j+1] = temp;
temp = rank[j];
rank[j] = rank [j+1];
rank [j+1] = temp;
*/
/*
temp = no[j];
no[j] = no [j+1];
no [j+1] = temp;
temp = kor[j];
kor [j] = kor [j+1];
kor [j+1] = temp;
temp = eng[j];
eng[j] = eng [j+1];
eng [j+1] = temp;

temp = tot[j];
tot[j] = tot [j+1];
tot [j+1] = temp;
temp = avg[j];
avg[j] =avg [j+1];
avg [j+1] = temp;
temp = grade[j];
grade[j] = grade [j+1];
grade [j+1] = temp;
temp = rank[j];
rank[j] = rank [j+1];
rank [j+1] = temp;
*/
public static void main(String[] args){
int no[] = {1, 2, 3};
int kor[] = {98, 76, 85};
int eng[] = {90, 55, 73};
//-------------데이터준비 끝
int tot[] = new int[3];
int avg[]= new int[3];
char grade[]= new char[3];
int rank[] = new int[3];
//평균, 학점, 등수 구하기 // 등수를 1등을기준으로잡는다 ranl[0]=1
/*
for (int i=0;i<no.length; i++){
tot[i] = kor[i]+eng[i];
}
*/
//출력

int sungjuk[][] = { // 학번 국어 영어 총점 평균 순위
{1, 98, 90, 0, 0, 0}, //heap메모리 데이터가 저장된 공간
{2, 76, 55, 0, 0, 0}, 
{3, 85, 73, 0, 0, 0}
};
// 0   1  2 3 4 5 6
System.out.println("학번\t국어\t영어\t총점\t평균\t학점\t순위");
System.out.println("***************************************");
//총점 평균 학점 등수 구하기
for (int i =0;  i<sungjuk.length; i++)
{
sungjuk[i][3]=sungjuk[i][1]+sungjuk[i][2];
};
for (int i =0; i <sungjuk.length; i++)
{
sungjuk[i][4]=sungjuk[i][3] / 2 ;
};
for (int i=0; i<sungjuk.length;i++)
{
if
(sungjuk[i][4]>=90)
grade[i]='A';
else if(sungjuk[i][4]>=80)
grade[i]='B';
else if(sungjuk[i][4]>=70)
grade[i]='C';
else if(sungjuk[i][4]>=60)
grade[i]='D';
else
grade[i]='F';
};
for(int i=0; i<sungjuk.length; i++){
sungjuk[i][5] = 1;
for(int j=0; j<sungjuk.length; j++){
if(sungjuk[i][3] < sungjuk[j][3])
sungjuk[i][5]++;
};
};
for (int i=0; i<sungjuk.length-1;i++){
for (int j=i+1; j<sungjuk.length; j++){
if(sungjuk[i][3]<sungjuk[j][3]){
int[]temp = sungjuk[i];
sungjuk[i] = sungjuk[j];
sungjuk[i] = temp;
char temp1 = grade[i];
grade[i] = grade[j];
grade[j] = temp1;
};
};
};
System.out.println("학번\t국어\t영어\t총점\t평균\t학점\t순위");
System.out.println("***************************************************");
for(int i=0; i<sungjuk.length; i++){
System.out.println(sungjuk[i][0] + "\t" + sungjuk[i][1] + 
"\t" + sungjuk[i][2] + "\t" + sungjuk[i][3] + "\t" + 
sungjuk[i][4] + "\t" + grade[i] + "\t" +
sungjuk[i][5]);
}
}
}


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




*. String

char name1[] = new char[3];
name1[0] = '홍';
name1[1] = '길';
name1[2] = '동';
char name2[] = {'T''o''m'};


배열은 '숫자'데이터 에선 짱짱맨 이지만, '문자' 에선 개 ㅈ밥

문자쓰려면 String 이 짱짱맨


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

-----------------------------------------------------------------------------
String 활용



package prjArray;

public class StringTest1 {

public static void main(String[] args) {
// TODO String 클래스 예제1
String name1 = new String(); // String 클래스  인스턴스 생성
name1 = "홍길동";
System.out.println(name1);
String name2 = new String("임꺽정"); // 생성자 에 바로 데이터입력
System.out.println(name2);
String name3 = new String("강감찬"); 
System.out.println(name3);
/*
 * 
 * char[][] names = new char [3][3];
 * 
 * char[][]names = { {'홍','길','동'},
 *  {'강','감','찬'},
 *  {'임','꺽','정'}}
 */
     
String[]names = {"홍길동", "임꺽정", "강감찬"};
for(int i=0; i<names.length;i++)
System.out.println(names[i]);
}

}


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


String class 의 특징

1.Java 에선 문자열을 객체로 취급.


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


public class Stringclass2 {

public static void main(String[] args) {
// TODO 메소드 사용법

String str1="Java is wonderful shit";
System.out.println("글자의 길이 : " + str1.length());
System.out.println("글자의 길이 : " + "java is beautiful".length());
//선택한 위치의 한 문자를 가져오는 메소드
//charAt
System.out.println(str1.charAt(5));
//값의비교
//equals
String str2 = "java";
String str3 = "java";
if (str2.equals(str3))
System.out.println("same value");
else
System.out.println("different value");
//==
if (str2 == str3)  // str 의 주소를 비교
System.out.println("same adress");
else
System.out.println("different adress");
//compareTo
System.out.println("java".compareTo("java")); //0 이면 같을때
System.out.println("java".compareTo("javu")); //음수 이거나 양수 이면 다를때
System.out.println("javu".compareTo("java")); // 음수나 양수가 나오는 이유는, 알파벳 을 아스키코드 숫자로 취급하기 때문.
//지정한 문자나 문자열의 위치를 알려주는 메소드
//indexOf
String str4 = "To be or not to be";
System.out.println(str4.indexOf("be"));//문자열을 찾는 메소드
System.out.println(str4.lastIndexOf("be"));//문자열을 '뒤에서부터' 찾는 메소드
System.out.println(str4.lastIndexOf("love"));//-1 이 나오면 찾는 값이 없을때
//선택한 위치에 있는 여러 문자들을 가져오는 메소드
//substring
String str5 = "Java is number one shit";
// 0123456
// 1234567
System.out.println(str5.substring(5,6));//시작위치는 0부터 시작하고; 끝위치는 1부터 시작함.
System.out.println(str5.substring(5,7));//5,6 은 i      5,7은 is
System.out.println(str5.substring(5));  //값을 하나만 넣어주면 기준글자 이후의 모든 글자가 출력됨
//앞 문자열 과 뒷 문자열 을 연결시켜주는 메소드
//concat
String str6 = "java";
String str7 = str6.concat("is safeful");
System.out.println(str7);
 
if(str6==str7)
System.out.println("same");
else
System.out.println("dif");

//append 는 concat 이랑 비슷함
StringBuffer str8 = new StringBuffer("java");
StringBuffer str9= str8.append("is safeful") ; //클래스끼리는 캐스팅을할수없다 ;;결국 오류
System.out.println(str9);
}

}


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




2.동일한 인스턴스를 중복해서 만들지 않는다.


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



public class StringTest3 {

public static void main(String[] args) {
// TODO String class 의 특징
String str1 = "java"; //이미 만들어진 문자열을 또 인스턴스로 만들지는않음 
String str2 = "java"; //str2 = java 라고 만들려고하면 만들어지지않음
String str3 = new String ("java");
/*
//그러나 new 를 통해서 만들면 무조건 생성된다.
if(str1==str2) // 주소값을 비교해 보면, 둘의 주소값은 같다고 나옴.
System.out.println("sameadr");
else
System.out.println("difadr");

if(str1==str3) // 주소값을 비교해 보면, 둘의 주소값은 다르다고 나옴.
System.out.println("sameadr");
else
System.out.println("difadr");

*/
}

}

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




3.한번정한 string 값은 수정불가



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




public class StringTest3 {

public static void main(String[] args) {
// TODO String class 의 특징
String str1 = "java"; //이미 만들어진 문자열을 또 인스턴스로 만들지는않음 
String str2 = "java"; //str2 = java 라고 만들려고하면 만들어지지않음
String str3 = new String ("java");
//그러나 new 를 통해서 만들면 무조건 생성된다.
if(str1==str2) // 주소값을 비교해 보면, 둘의 주소값은 같다고 나옴.
System.out.println("sameadr");
else
System.out.println("difadr");

if(str1==str3) // 주소값을 비교해 보면, 둘의 주소값은 다르다고 나옴.
System.out.println("sameadr");
else
System.out.println("difadr");

//한번 값을 정하면 값을 수정할수 없다.
String str4 = "jsp";
str4="spring";
str4="html";
String str5 = "java";
String str6 = str5.concat("is safeful");
System.out.println(str6);
 
if(str5==str6)
System.out.println("same");
else
System.out.println("dif");
//StringBuffer str7 = "java";//stringbuffer 클래스와 string 클라스는 다르다 
StringBuffer str7 = new StringBuffer("java");
//append 는 concat 이랑 비슷함
StringBuffer str8 = str7.append("is safeful") ; //클래스끼리는 캐스팅을할수없다 ;;결국 오류
System.out.println(str8);
 
if (str7==str8)
System.out.println("same");
else
System.out.println("dif");
//주소값이 바뀜 stringbuffer
 
 
 
 
}

}




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


*. Command Line Argument(명령행 인자)

***************************************************8


class part 2

1.묶음
-변수와 메소드
2.설계도-> 인스턴스(instance) - 클래스에 의해 만들어진 메모리 복사본
3.User Define Data Type
4.자바프로그램을 구성하는 최소단위
5.하나의 기능
6.배열의 보완기능 (add on)

변수---> (값을 하나밖에 입력하지 못한다.)
변수--> 배열 (많은양의 데이터를 다루겠다)
변수 -->배열--> 클래스-->


ㄴ같은 데이터타잎 만 묶을수있다(단점) // 클래스 로 보완가능
ㄴ크기가 정해져있다.(단점)       //2. 3. 번을 해결하기위해 
ㄴ삽입/삭제가 불편하다(단점)       //연결리스트, linkedList 라고 이름지어진 걸 해결함



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

Access Modifier(접근 지정자)

접근허용

1.annonymous(default) : 같은 패키지 안에서만 접근 허용
2.public : 완전 개방

접근불가

3.private : 완전 접근불가
4.protected : 다른 패키지 에서만 접근불가


변수 메소드 클래스 모두에서 사용가능


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

public 접근 - 




class AccessDemo{
public int id;      // public 완전개방 - 다른곳에서의 접근을 허용한다.
public String name;
public double point;
}


public class AccessModifierTest {

public static void main(String[] args) {
// TODO Access Modifier Test 테스트
AccessDemo hong = new AccessDemo();
hong.id = 1111;                              //다른 클래스 안에 있는 정보를 접근할수 있다.
hong.name = "홍길동";
hong.point = 3.5;
System.out.println("사번 : " + hong.id);
System.out.println("이름 : " + hong.name);
System.out.println("점수 : " + hong.point);

}

}



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


커맨드 입력을통한 실습



public class CommandTest {

public static void main(String[] args) {
// TODO 명령행 인자 테스트
System.out.println(args[0]);
/*cmd java실행시 
java CommantTest 홍길동 임꺽정 이순신
출력값 홍길동 임꺽정 이순신
*/
System.out.println("***************************************************");
String data[][]={
 {"홍길동", "010-1111-1111","서울시 강남구 역삼동 동에번쩍서에번쩍"},
 {"이순신", "010-2222-2222","서울시 광화문대로 한복판"},
 {"신사임당","010-3333-3333","서울시 한국은행동 오만원로 앞면"}
 };
for (int i=0; i <data.length; i++){
if (args[0].compareTo(data[i][0])==0)
{
for (int j=0;j<data.length;j++)
{
System.out.println(data[i][j]);
}
}
}
 
// for(int i=0; i<data.length; i++){
// System.out.println(data[i][]);
}}


/*커맨드 명령행인자 테스트
 * 실행예시)
 * 
 * java PhoneBook 홍길동 /입력
 *
 * 4-5명 입력 후 검색
 * 홍길동 111-1111 서울시 강남구/출력
 * 3차원데이터-hint
 * 
 */






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


Scanner 

숫자 문자 상관없이 아무거나 입력가능




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




public class ScannerTest {

public static void main(String[] args) {
// TODO Scanner 클래스 사용법
java.util.Scanner scan = new java.util.Scanner(System.in); //system.in 이 키보드장치를 입력하는 역할을한다.
System.out.println("What is Ur name?");
String name = scan.nextLine();
System.out.println("Ur name is " +name );

System.out.println("How old are U?");
int age = scan.nextInt();
System.out.println("U R " + age + "years old.");
System.out.println("What is Ur point?");
double point = scan.nextDouble();
System.out.println("Ur point is" + point);
//학번 국어점수 
}

}




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



성적표 기본 프로그램 만들기


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


class Student{
String name;//매개변수와 인스턴스변수가 같으면 안되므로 this 를 활용한다.
int no;
int kor;
int eng;
int tot;
int avg;
int rank;
char grade;
Student(){}
Student(String name, int no, int kor, int eng ){
this.name = name;//매개변수와 인스턴스변수 의 차이가 있으므로 this 사용
this.no = no;
this.kor=kor;
this.eng=eng;
}
}










public class Sungjukv3 {
public static void main(String[] args) {
// TODO 클래스를 이용한 성적표 예제
Student[] student = new Student[3];//인스턴스를 3개 저장하는 배열을 만든다.//인스턴스를 저장하는 참조변수를 3개만든거임 인스턴스 3개 ㄴㄴ
//heap 메모리를 저장하기위한 stack 메모리 3개 생성
student[0]=new Student("홍길동", 1, 98, 90);
student[1]=new Student("이순신", 2, 76, 55);
student[2]=new Student("임꺽정", 3, 85, 73);
String[] names = {"홍길동", "임꺽정", "이순신"};
char grade[] = new char[3];
// 학번, 국어, 영어, 총점, 평균, 순위
int sungjuk[][] = { {1, 98, 90, 0, 0, 0}, 
{2, 76, 55, 0, 0, 0}, 
{3, 85, 73, 0, 0, 0}
};
for(int i=0; i<student.length; i++){
student[i].tot = student[i].kor + student[i].eng;//총점
}
for(int i=0; i<student.length; i++){
student[i].avg = student[i].tot / 2;//평균
}
for(int i=0; i<student.length; i++){//등급
if(student[i].avg >= 90)
grade[i] = 'A';
else if(student[i].avg >= 80)
grade[i] = 'B';
else if(student[i].avg >= 70)
grade[i] = 'C';
else if(student[i].avg >= 60)
grade[i] = 'D';
else 
grade[i] = 'F';
}
for(int i=0; i<student.length; i++){
student[i].rank = 1;
for(int j=0; j<student.length; j++){
if(student[i].avg < student[j].avg)
student[i].rank++;
}
}
//정렬 (성적순으로 내림차순)
for (int i=0; i<student.length-1;i++){
for (int j=i+1;j<student.length;j++){
if (student[i].avg<student[j].avg){
Student temp = student[i];
student[i] = student[j];
student[j] = temp;
}}
}
System.out.println("이름\t\t학번\t국어\t영어\t총점\t평균\t학점\t순위");
System.out.println("***************************************************");
for(int i=0; i<student.length; i++){
System.out.println(names[i] +"\t\t"+ student[i].no + "\t" + student[i].kor + 
"\t" + student[i].eng + "\t" + student[i].tot + "\t" + 
student[i].avg+ "\t" + grade[i] + "\t" + student[i].rank);
}
/*
// 총점, 평균, 학점, 등수 구하기
for(int i=0; i<sungjuk.length; i++){
sungjuk[i][3] = sungjuk[i][1] + sungjuk[i][2];
}
for(int i=0; i<sungjuk.length; i++){
sungjuk[i][4] = sungjuk[i][3] / 2;
}
for(int i=0; i<sungjuk.length; i++){
if(sungjuk[i][4] >= 90)
grade[i] = 'A';
else if(sungjuk[i][4] >= 80)
grade[i] = 'B';
else if(sungjuk[i][4] >= 70)
grade[i] = 'C';
else if(sungjuk[i][4] >= 60)
grade[i] = 'D';
else 
grade[i] = 'F';
}
for(int i=0; i<sungjuk.length; i++){
sungjuk[i][5] = 1;
for(int j=0; j<sungjuk.length; j++){
if(sungjuk[i][3] < sungjuk[j][3])
sungjuk[i][5]++;
}
}
// 출력 
System.out.println("학번\t국어\t영어\t총점\t평균\t학점\t순위");
System.out.println("***************************************************");
for(int i=0; i<sungjuk.length; i++){
System.out.println(sungjuk[i][0] +"\t" + sungjuk[i][1] + 
"\t" + sungjuk[i][2] + "\t" + sungjuk[i][3] + "\t" + 
sungjuk[i][4] + "\t" + grade[i] + "\t" +
sungjuk[i][5]);
}
// 정렬(성적순으로 내림차순)
for(int i=0; i<sungjuk.length-1; i++){
for(int j=i+1; j<sungjuk.length; j++){
if(sungjuk[i][3] < sungjuk[j][3]){
int[] temp = sungjuk[i];
sungjuk[i] = sungjuk[j];
sungjuk[j] = temp;
char temp1 = grade[i];
grade[i] = grade[j];
grade[j] = temp1;
String name = names[i];
names[i]=names[j];
names[j]=name;
}
}
}
System.out.println("이름\t\t학번\t국어\t영어\t총점\t평균\t학점\t순위");
System.out.println("***************************************************");
for(int i=0; i<sungjuk.length; i++){
System.out.println(names[i] +"\t\t"+ sungjuk[i][0] + "\t" + sungjuk[i][1] + 
"\t" + sungjuk[i][2] + "\t" + sungjuk[i][3] + "\t" + 
sungjuk[i][4] + "\t" + grade[i] + "\t" +
sungjuk[i][5]);
}
*/
}
}


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

java 강의 6일차 - 배열 Array

java 강의 6일차 - 배열

8. this
1) 참조변수 -우리가 만든 참조변수 가 아니라 자바에서 만들어놓은 참조변수
2) read only - 읽기전용
3) 현재 실행중인 인스턴스 의 주소
4) 모든 메소드(static 제외) 의 매개변수로서 항상존재
5) 용도
-this.변수 , this.메소드
-this( ) : 현재 인스턴스 를 생성하는 생성자를 호출

___________________________________________________________________________________


배열  (Array)

1. 정의 : 자바에서는 배열을 객체로 취급한다
같은 이름으로 정의된(메모리상의) 연속적인 공간
[인덱스] : 연속적인 공간을 구분해주는 지표
변수들을 한줄로 연속적으로 붙여버리면 [ 1차원(직렬)배열 ]
1차원배열 을 여러줄로 붙여버리면 [ 2차원 배열 ]
2차원배열 을 여러겹으로 붙여버리면 [ 3차원 배열 ]

보통 2차원까지 사용을하고, 3차원이상은 데이터를 보관하는 정도로 쓴다.

2. 응용
검색기능
-순차 (Sequence)검색
-이분(Binary) 검색
정렬기준
-swap 알고리즘 선행
-버블 정렬
-선택 정렬
-삽입 정렬
______________________________________

*swap 알고리즘
int a=10 , b=5 라고할떄 a와 b값을 바꾼다

c라는값을만들고; 
c=a;
a=b;
b=c;

___________________________________________________
*
bubble Sort
-서로 이웃하는 것 끼리 비교하여 교환하는 방식
(8 7) 9 2 3 6
7 (8 9) 2 3 6
7 8 (9 2) 3 6
7 8 2 (9 3) 6
7 8 2 3 (9 6)]
______________________
7 8 2 3 6 9   


반복

___________________________________________________

*selection sort 선택정렬

-기준 위치(가장 큰값이 있는 위치 또는 가장 작은값이 있는 위치) 를 선택하여 비교 정렬 하는 방식

기준

*
[8] [7] 9 2 3 6
[7] 8 [9] 2 3 6
[7] 8 9 [2] 3 6
[2] 8 9 7 [3] 6
[2] 8 9 7 3 [6]
----------------------------------
===================
-------------------------------
[2] [8] 9 7 3 6
[2] 7 [9] 8 3 6
[2] 3 9 [8] 7 6
[2] 3 9 8 [7] 6
[2] 3 8 9 7 [6]

2 3 8 9 7 6
2 3 7 9 8 6
2 3 6 9 8 7

2 3 6 8 9 7
2 3 6 7 9 8

2 3 6 7 8 9


3. 블규칙 배열 
-동적바인딩
char name1[] = {'t', 'o', 'm'};
char name2[] = {'m', 'a', 'r', 'r', 'y'};
char name3[] = {'j', 'o', 'h', 'n', 's', 'o', 'n'};

char name[][] = new char [3][7]:
--------------------------------------

char[][]names = new char[3];
...
names[0] = new char [3];
names[1] = new char [5];
names[2] = new char [7];

___________________________________________________________________________

stack
1. LIFO(Last In First Out , 선입 후출)  구조
2. 임시데이터 저장 에 많이쓰임
-인스턴스 주소
-메서드 복귀주소
-비객체형의 데이터

class Test{
int j;

void test(){
}
void main(){
int i=10;
Test ob1 = new Test();
ob1.j=20;

ob1.test()  // 실행위치가 바뀜 위로 건너감
}
}


heap
-인스턴스 데이터 저장
-안전하고 오래 사용할수있는 데이터


1차원배열 : 값  -- 인스턴스데이터가 저장된 주소로 바로 찾아감
다차원배열 : 주소 -- 인스턴스 데이터가 저장된 주소가 저장된 주소로 찾아감.








*개발툴
-이클립스 무료
-Netbeans 무료

-intelli-J 유료
-J Builder 유료
.....

개발툴 순서
워크스페이스 - 프로젝트 - 클래스




과제 
============================================================================================================================================================


과제
1. 갤런을 리턴으로 바꾸는 예제

1갤런부터 100갤런까지 리터에대한 변환표를 작성

단 10갤런마다 줄바꿈을 해주도록 한다.


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

연산자 : *
숫자1 : 4
숫자2 : 7
결과 : 4 * 7 = 28

연산자 : x
종료..


3. 숫자를 입력받아 합계를 구하는 예제 ( 0을 입력하면 종료)

숫자 1 : 2 
숫자 2 : 5
숫자 3 : 3
...
숫자n : 0
합계 : ? 

4. Q3을 응용해서 짝수의 합과 홀수의 합을 구하시오.
 ( 단 입력횟수를 미리 입력받는다.)
입력횟수 : 4
2
3
7
6
---
짝수의합
홀수의합


5. 간단한 문자 추측 게임을 만드시오.

미리 정답을 정해놓는다. (예를들면 k )

a-z 까지 생각한 문자를 입력  : b
틀렸다.
a-z 까지 생각한 문자를 입력  : b
틀렸다.
...
(정답을 맞출때까지 반복) 정답에 가까운지 멀어지는지 에 대한 힌트


6. 간단한 도움말시스템 구축
1. if
2; switch
3.while
4.for
5.종료
번호선택  : 1


if (조건식) 문장 ;

1. if
2; switch
3.while
4.for
5.종료
번호선택  :



7.
"."이 입력될 때까지 키보드 입력을 읽어서 입력된 공백의 갯수를 세고, 그 합을 출력하시오






8 . 

      *                           *************
     ***                          ***********
    *****                          *********
   *******                         *******
  *********                         *****                        
 ***********                        ***
*************                        *


삼각형모양이 나오게 출력하라

9.

1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24






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

1.
public class HW21
{
public static void main(String args [])throws java.io.IOException
{
double gallon = 1.00000000;
double liter = 3.78541178*gallon;
System.out.println("갤런을 리턴으로 바꾸는 예제. \n 1갤런부터 100갤런까지 리터에대한 변환표를 작성단 10갤런마다 줄바꿈을 해주도록 한다.");
int cnt = 0;
while (cnt < 100 )
{
cnt++;
for (int a = 0 ; a <= 10; a++)
{
if(cnt==(a*10)+1)
System.out.println();continue; 
}
System.out.println(cnt*gallon + " gallon = "+ cnt*liter + " liter");
// cnt*gallon"gallon = " + "=" + liter"liter"
}
}



}
----------------------------------------------------------------------------



2.

public class HW22
{
public static void main(String args[]) throws java.io.IOException
{
for  ( ; ; )
{
System.out.println("간단한 계산기 \n a값을 지정하고,  b값을 지정하라 .\n ");
int a = System.in.read()-48;
System.in.skip(2);
int b = System.in.read()-48;
System.in.skip(2);
System.out.println("+, -, *, /, 중 선택하세요.");
char C = (char)System.in.read();
System.in.skip(2);
System.out.println("숫자 1 : " + a + "\n숫자 2 : " + b + "\n연산   : " + C );
switch(C)
{
case '+' :
System.out.println("결과   : " + a + " + " + b +" = "  + (a+b));break;
case '-' :
System.out.println("결과   : " + a + " - " + b +" = "  + (a-b));break;
case '*' :
System.out.println("결과   : " + a + " * " + b +" = "  + (a*b));break;
case '/' :
System.out.println("결과   : " + a + " / " + b +" = "  + (a/b));break;
case 'x' :
System.out.println("종료... ");break;
default:
System.out.println("올바른 수식이 아닙니다.\n" );break;
}
if( C == 'x')break;
System.out.print("\n");
}
}
}

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


3.

public class HW23
{
public static void main(String args[]) throws java.io.IOException
{ //무작위숫자



int sum = 0;
for(;;)
{
int input = System.in.read()-48;
System.in.skip(2);
sum+=input;
if(input==0) break;
}
System.out.print("합계 : " + sum);
}
}

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

4.

public class HW24
{
public static void main(String args[]) throws java.io.IOException
{ //무작위숫자
int oddSum = 0;
int evenSum = 0;
System.out.println("입력횟수");
int cnt= System.in.read()-48;
System.in.skip(2);
for(;cnt>0;cnt--) // 초기화 조건식 증감식
{
int input = System.in.read()-48;
System.in.skip(2);
if(input%2!=0)
oddSum+=input;
else
evenSum+=input;
}
System.out.print("홀수합계 : " + oddSum);
System.out.print("짝수합계 : " + evenSum);
}
}

-----------------------------------------------------------------------------
5.

public class HW25
{
public static void main(String args[]) throws java.io.IOException
{
System.out.println("문자추측게임 \n 알파벳을입력하세요 : ");
for(;;){
char alph = (char)System.in.read();
System.in.skip(2);
int a = alph;
if(alph!=107)
{//k=107 ask
System.out.println(alph + " 는 답이 아닙니다 . \n hint : "+ (a-107));continue;
}
else
System.out.println(alph + " 는 정답입니다 " );break;
}
}
}

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

6.

public class HW26
{
public static void main(String args[]) throws java.io.IOException
{
System.out.println("도움말 : 도움말을 선택하세요. " );
while(true)
{
System.out.println("1. if\n2. switch\n3. while\n4. for\n5. 종료" );
char num = (char)System.in.read();
System.in.skip(2);
switch(num)
{
case '1' :
System.out.println("도움말선택 : " + num +"\n1. if \n만약 이렇다면 결과는 저렇다. 조건예시문을 작성함 ");break;
case '2' :
System.out.println("도움말선택 : " + num +"\n2. switch \n하나의입력값에 하나의결과만을 대입 출력");break;
case '3' :
System.out.println("도움말선택 : " + num +"\n3. while \n~하는동안=변수에 제한을 둔 동안은 반복");break;
case '4' :
System.out.println("도움말선택 : " + num +"\n4. for \n조건식이 만족하는만큼 카운터를통해 반복");break;
default:
System.out.println("종료...");break;
}
}
}
}

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

7.

package work;

public class HW27{
public static void main (String args[])throws java.io.IOException{
int a=0;
while (true){
System.out.print("insert the alphabet : ");
char alph = (char)System.in.read();
System.in.skip(2);
if(alph==32)
a = a+1;
if (alph =='.')
break;
}
System.out.println("How many key 'space bar' U press : " +a);
}
}

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

8.

 public class HW28{
 public static void main(String args []) 
 {
 System.out.println( "삼각형 만들기");

int hei=6;
for (int i=0;i<=hei;i++)   // 0 1 2 3 4 5 6 7 
{
for(int j=0;j+i<hei;j++) // 0123456 123456 23456 3456 456 56 6 
{System.out.print(" ");}
for(int j=0;j<=i*2;j++) // 0 /0 1 2/0 1 2 3 4/0 1 2 3 4 5 6/
{System.out.print("*");}
System.out.println();
}
for (int i=0;i<=hei;i++)
{
for(int j=0;j<i;j++) // 0 /0 1 2/0 1 2 3 4/0 1 2 3 4 5 6/
{System.out.print(" ");}
for(int j=0;j+i*2<=hei*2;j++) // 01234567 / 
{System.out.print("*");}
System.out.println();
}
 }
 }
-----------------------------------------------------------------------------

9.

public class HW29{
 public static void main(String args []) 
 {
 System.out.println( "삼각형 만들기");

int hei=4;
int cnt = 0;
for (int i=0;i<=hei;i++)   // 0 1 2 3 4 5 6 7 
{
for(int j=0;j+i<hei;j++) // 0123456 123456 23456 3456 456 56 6 
{System.out.print("\t");}
for(int j=0;j<=i*2;j++) // 0 /0 1 2/0 1 2 3 4/0 1 2 3 4 5 6/
{System.out.print(cnt++ +"\t");}
System.out.println();
}
for (int i=0;i<=hei;i++)
{
for(int j=0;j<i;j++) // 0 /0 1 2/0 1 2 3 4/0 1 2 3 4 5 6/
{System.out.print("\t");}
for(int j=0;j+i*2<=hei*2;j++) // 01234567 / 
{System.out.print(cnt++ +"\t");}
System.out.println();
}
 }
}