Q1. 

1

22

333

4444

55555

int[] arr = {1,2,3,4,5};

for(int i=0;i<5;i++){

for(int j=0;j<i+1;j++){

System.out.print(arr[i]);

}

System.out.println();

}

다른방법

int limit = 6;

String[] arr2 = new String[limit];

for(int i=0;i<limit;i++){

arr2[i]="";

for(int j=0;j<=i;j++){

arr2[i]+=i+1+"";

}

}

for(int i=0;i<limit;i++){

System.out.println(arr2[i]);

}

Q2. 

* * *

 * *

* * *

 * *

* * *

char[] arr = new char[25];

for(int i=0;i<25;i++){

if(i%2==0){

arr[i]='*';

}else{

arr[i]=' ';

}

if(i%5==0){

System.out.println();

}

System.out.print(arr[i]);

}

Q3. 

*

   *

       *

           *

                *

char[] st = new char[10];

for(int i=0;i<5;i++){

for(int j=0;j<i+1;j++){

if(j==i){

st[i]='*';

System.out.print(st[i]);

}else{

st[i]=' ';

System.out.print(st[i]);

}

}

System.out.println();

}

Q4. 

arr={24,33,17,44,2};

로또 번호는 2,17,24,33,44 입니다.

int[] arr = {24,33,17,44,2};

int tmp;


for(int i=0;i<arr.length-1;i++){ //오름차순

for(int j=i+1;j<arr.length;j++){

if(arr[i]>arr[j]){

tmp=arr[i];

arr[i]=arr[j];

arr[j]=tmp;

}

}

}

for (int i=0; i<arr.length;i++) {

if (i==arr.length-1) {

System.out.print(arr[i] + "입니다");

} else if (i == 0) {

System.out.print("로또 번호는 " + arr[i] + ",");

} else {

System.out.print(arr[i] + ",");

}

}


'* Programming > JAVA' 카테고리의 다른 글

DAY12 Lotto구매하기 결과발표(static메소드)  (0) 2016.07.21
JAR로 export 하기  (0) 2016.07.19
DAY12 배열  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 업다운 게임  (0) 2016.07.18

12일차 강의 정리


1. 단일 배열

배열(객체)

변수가 많이 필요한 경우에 사용

선언 형태 : 자료형[] 변수명(배열명) = new 자료형[갯수];

     ( 자료형 변수명[] = new 자료형[갯수]; )

( 자료형[] 변수명 = {값,값,...}; )

변수명[인덱스]=초기값;

인덱스는 0으로 시작, +1씩 증가, 총 갯수에서 -1 까지

소스

public class Ex01 {

public static void main(String[] args) {

int[] arr = new int[100]; //배열 선언 방법1

for(int i=0;i<10;i++){ //배열의 초기화

arr[i]=i;

System.out.println("arr["+i+"]="+arr[i]);

}

System.out.println(arr[0]+arr[1]+arr[2]+arr[3]+arr[4]);

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

char[] ch = new char[26]; //char배열 선언

for(int i=0;i<26;i++){

ch[i]=(char)(65+i);

System.out.print(ch[i]+" ");

}

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


int[] arr2 = new int[]{0,1,2,3,4}; //배열 선언 방법2

for(int i=0;i<5;i++){ //배열의 초기화

System.out.print(arr2[i]+" ");

}

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

int[] arr3 = {0,1,2,3,4}; //배열 선언 방법3

for(int i=0;i<5;i++){ //배열의 초기화

System.out.print(arr3[i]+" ");

}

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

//배열사용 ->홀수들의 합(1~100)까지

int[] array = new int[101]; //배열 선언

int sum=0;

for(int i=0;i<101;i++){ //배열의 초기화

array[i]=i;

if(i%2!=0){

sum +=array[i];

}

}

System.out.println("값=>"+sum);

}//main end

}//class end

결과

소스2

public class Ex02 {

public static void main(String[] args) {

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

String input1 = args[0];

String input2 = args[1];

String input3 = args[2];

System.out.println("input count:"+args.length+"("+input1+", "+input2+", "+input3+")"); //입력준 값의 갯수와 1,2,3출력

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

for(int i=0;i<args.length;i++){

System.out.println(args[i]); //args입력 준 값 출력

}

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

int[] arr = null; //배열의 선언

arr = new int[3]; //배열의 선언

for(int i=0;i<arr.length;i++){ //배열의 초기화

arr[i]=0;

}

arr[0]=1;

arr[1]=2;

arr[2]=3;

//새로 다시 선언함으로 위의 객체는 가비지 컬렉션(자원관리에 효율적)에 의해 삭제(더이상 가르킬방법이 없어서)

arr = new int[5];

arr=new int[]{1,2,3,4,5};

int[] arr2 = {1,2,3};         //new int[]생략 가능한 경우는 선언시 최초

for(int i=0;i<arr.length;i++){

System.out.print(arr[i]+"\t");

}

}//main end

}//class end

결과2

소스3

public class Ex03 {

public static void main(String[] args) {

String[] arr = new String[]{"java", "web", "spring"};

System.out.println("1번째 결과:");

for(int i=0;i<arr.length;i++){

System.out.println(arr[i]);

}

func1(arr); //메소드 호출(문자열 인자로)


System.out.println("\n3번째 결과:");

for(int i=0;i<arr.length;i++){

System.out.println(arr[i]);         //배열은 참조변수,,주소값을 복사했기 때문에 변형된 것이 그대로 출력

}

}//main end


public static void func1(String[] st){ //배열 {"java", "web", "spring"}을 인자로 받아

st[1]="html"; //arr[1]를 변경

System.out.println("\n2번째 결과 출력");

for(int i=0;i<st.length;i++){

System.out.println(st[i]);

}

}//func1 end

}//class end

결과3

소스4 (입력받은 배열을 역순하라)

메인{

int[] arr = new int[]{1,2,3,4,5};

int[] arr2 = new int[arr.length];

//방법1

// int j=arr.length-1;

//

// for(int i=0;i<arr.length;i++){

// arr2[i]=arr[j];

// j--;

// }

//2방법

for(int i=0;i<arr.length;i++){

arr2[i]=arr[i];

}

int temp=0;

for(int i=0;i<arr2.length-1;i++){

for(int j=i+1;j<arr2.length;j++){

if(arr2[i] < arr2[j]){

temp=arr2[i];

arr2[i]=arr2[j];

arr2[j]=temp;

}

}

}

System.out.print("arr1: ");

for(int i=0;i<arr.length;i++){ //arr출력

System.out.print(arr[i]+" ");

}

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

System.out.print("arr2: ");

for(int i=0;i<arr.length;i++){ //arr2출력

System.out.print(arr2[i]+" ");

}

}

결과

2. 다중 배열

선언 형태 : 자료형[][] 변수명(배열명) = new 자료형[갯수][갯수];

다른 방법은 소스로 설명

소스

public static void main(String[] args) {

//다중배열

int[][] arr = new int[3][4]; //[행][열] 순으로 3행 4열의 다중배열

System.out.println("행의 갯수:"+arr.length); //행의 갯수

System.out.println("열의 갯수:"+arr[0].length); //열의 갯수

System.out.println("열의 갯수:"+arr[2].length); //열의 갯수는 행의 번호와 관계X

for(int i=0;i<arr.length;i++){

for(int j=0;j<4;j++){

arr[i][j]=j;

System.out.print(arr[i][j]);

}

System.out.println();

}

}//main end

결과

초기화 하는 방법

//학생1 - 국어:70 영어:75 수학70

//학생2 - 국어:80 영어:85 수학84

//학생3 - 국어:90 영어:55 수학60

int[][] sungjuck = new int[3][3];    //선언


//방법1

sungjuck[0][0]=70; //학생1

sungjuck[0][1]=75; //학생1

sungjuck[0][2]=70; //학생1



//방법2

int[] stu2 = sungjuck[1]; //학생2

stu2[0] = 80; //학생2

stu2[1] = 85; //학생2

stu2[2] = 84; //학생2



//방법3

int[] stu3 ={90,55,60}; //학생3

sungjuck[2] = stu3; //학생3

stu3[1]=65; //학생3 영어점수 수정(학생1-X,학생2-O)



//방법4

sungjuck[2] = new int[]{90,55,60}; //학생3

소스(방법5)

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

System.out.println("학생성적관리(v1.2.0)");

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

//방법5

int[][] sungjuck = {{70,75,70},

{80,85,84},

{90,55,60} };     //학생1,2,3 [3][3]

System.out.println("국어\t영어\t수학\t총점\t평균\t학점");

for(int i=0;i<sungjuck.length;i++){

int[] stu = sungjuck[i]; //한명의 학생 성적

int sum=0; //총점

double avg; //평균

char c; //학점

for(int j=0;j<stu.length;j++){

sum+=stu[j];

System.out.print(stu[j]+"\t");

}

avg=100*sum/stu.length/100.0; //평균 계산

if(avg>=90){

c='A';

}else if(avg>=80){

c='B';

}else if(avg>=70){

c='C';

}else if(avg>60){

c='D';

}else{

c='F';

}

System.out.println(sum+"\t"+avg+"\t"+c);

}

결과



'* Programming > JAVA' 카테고리의 다른 글

JAR로 export 하기  (0) 2016.07.19
DAY12 배열 문제  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 업다운 게임  (0) 2016.07.18
DAY10 Class/생성자  (0) 2016.07.18

11일차 강의 정리


DAY8, DAY9, DAY10 의 총 정리


객체지향 언어

기능 -> 메소드-동사

속성 -> 필드-명사


메소드

형태 : [static] 자료형 메소드명 (인자){ 

...

return 자료형에 해당하는 값;

   }


1. static 메소드(클래스메소드)

(main에서 사용 형태) [패키지경로].[class명.]메소드명();  *나자신이갖는 메소드의 경우 class명 생략

객체의 생성없이 바로 사용가능

프로그램 시작과 동시에 메모리 static영역에 로딩되어 실행

가비지 컬렉션의  메모리 관리대상이 아님

라이프 사이클은 프로그램 시작 ~ 종료시 까지 항시 유지

절차지향 프로그래밍 - 함수 ...와 동일하다고 생각하면 됨


2. non-static 메소드(인스턴스 메소드)

(main에서 사용 형태)

[패키지경로].Ex01(클래스명) me = new [패키지경로].Ex01()(생성자호출); //참조변수

참조변수(객체 메모리주소값).메소드명();

this = 참조변수 역할

객체 생성이 우선 - 생성된 객체의 주소값을 기억하기 위한 참조변수(클래스타입)


생성자

형태 : [접근제한자] 클래스명(){

...

}

객체 생성에 관여 - 객체 생성시 추가적인 작업

객체 생성 시에 단 한번 수행 - 재호출 불가

일반적으로 필드 값의 초기화


변수

멤버필드(전역변수)

형태 : [static] 자료형 변수명 = 초기화;

호출시 지역변수와 멤버필드 그명칭이 동일할 시, 우선순위는 지역변수>멤버필드


클래스변수(static) - 메모리 static 영역에 프로그램 시작과 동시에~~프로그램end

클래스명.변수명


인스턴스변수(non-static)

참조변수명.변수명


예제소스 & 변수의 상수화

소스

public class Ex01 {

int a;

static final double PI=3.14; //변수의 상수화(변경x)


public Ex01(){        //생성자

a=9;

}

public Ex01(int a){

this.a=a; //멤버필드

}

public static void main(String[] args) {

int a = func1();

func1();

Ex01 me = new Ex01(); //객체 생성

me.func2(); //참조변수를 반복해서 사용

me.func2();

me.func2();

new Ex01().func2(); //한번호출

  //PI=4.12; //에러

System.out.println("PI는 "+PI);

}//main end

static int func1(){

System.out.println("static 메소드");

return 0;

}

void func2(){

System.out.println(++a+"  non-static 메소드");

}

}//class end

결과





'* Programming > JAVA' 카테고리의 다른 글

DAY12 배열 문제  (0) 2016.07.19
DAY12 배열  (0) 2016.07.19
DAY10 업다운 게임  (0) 2016.07.18
DAY10 Class/생성자  (0) 2016.07.18
DAY9 멤버필드  (0) 2016.07.15

* 업다운 게임

숫자 1~100까지의 하나의 랜덤숫자를 맞춰라

5회안에 맞혀야 성공

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.util.Scanner;
 
public class Ex05 {
 
    double ran = Math.random();        //random함수
 
    int com = (int)(100*ran+1);        //1-100의 숫자 com 에 저장, +n 의 n은 시작숫자
 
    public static void main(String[] args)  throws Exception{
        Ex05 me = new Ex05();
 
        System.out.println("---------GAME START---------");
 
        me.game();        //game()호출
 
        System.out.println();
        System.out.println("----------GAME END----------");
 
    }//main end
 
    void game(){
 
        Scanner sc = new Scanner(System.in);
        int number;
 
        //System.out.println(com);        //랜덤숫자 정답
 
        for(int i=0;i<5;i++){
 
            System.out.print("1-100까지의 숫자 입력 >>> ");
 
            number=sc.nextInt();        //입력
 
            if(number<1 || number>100){            //1-100까지의 숫자가 아니면 다시 입력, count숫자도 -1 감소
                System.out.println("1-100까지의 숫자를 다시 입력하십시오");
                i--;
            }else if(number<com){
                System.out.println(number+"보다 큽니다");
            }else if(number>com){
                System.out.println(number+"보다 작습니다");
            }else{
                System.out.println("성공!!! "+(i+1)+"회 만에 성공하셨습니다!");    //i=0부터 시작이라 +1
                break;
            }
 
            System.out.println();
 
            if(i==4){
                System.out.println("실패..."+com+"이였습니다");
            }
        }//for end
    }//game end
}//class end
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY12 배열  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 Class/생성자  (0) 2016.07.18
DAY9 멤버필드  (0) 2016.07.15
Apache Ant  (0) 2016.07.13

10일차 강의 정리


DAY8, DAY9, DAY10 은 클래스의 구성요소에 대해 다룬다

1. Car class

소스1

public class Ex01 {

public static void main(String[] args) {

Car myCar = new Car();        //myCar 클래스 선언

System.out.println(myCar.model);

System.out.println(myCar.color);

myCar.run();

myCar.stop();

myCar.run();

myCar.color="파랑"; //myCar 색상 변경

System.out.println(myCar.color+"색"+myCar.model+"인 내차를 타고");

myCar.run();

System.out.println();

Car yourCar = new Car();        //yourCar 클래스 선언

System.out.println(yourCar.color+"색"+yourCar.model+"인 옆사람 차");


}//main end

}//Ex02 class end


class Car{ //Car class

String model = "모닝";

String color = "빨강";

public void run(){ //달린다

System.out.println("달린다");

}

public void stop(){ //멈춘다

System.out.println("멈춘다");

}

}//Car class end

결과1

소스2

public class Ex02 {

public static void main(String[] args) {

motocycle my = new motocycle();

int speed = 0;

speed = my.speedUp(speed, 20);    //속도업

speed = my.speedUp(speed, 30);

speed = my.speedUp(speed, 10);

my.speedView(speed);

speed = my.speedDown(speed,20);    //속도다운

speed = my.speedDown(speed,10);

speed = my.speedDown(speed,10);

my.speedView(speed);

}//main end

}//class end


class motocycle{

public void speedView(int speed){

System.out.println("현재속도:"+speed+"km");

}

public int speedUp(int a,int b){ //스피드 업

if(a+b<=80){

return a+b;

}else{

return 80; //최대속도 제한

}

}

public int speedDown(int a,int b){ //스피드 다운

if(a-b>=0){

return a-b;

}else{

return 0; //정지시 속도는 0

}

}

}//class end

결과2

소스3

public class Ex03 {

static String model = "텍트";

int speed;

int minSpeed;

int maxSpeed=80;

public static void main(String[] args) {

Ex03 me = new Ex03(); //객체 생성

me.speedUp(20);

me.speedUp(20);

prn(me);

me.speedUp(20);

prn(me);

me.speedUp(20);

prn(me);

me.speedUp(20);

prn(me);

me.speedUp(20);

prn(me);

me.speedUp(20);

me.speedUp(20);

prn(me);

me.speedDown(20);

prn(me);

}//main end

public static void prn(Ex03 me){ //(String st)과 같은 개념, String 또한 클래스 이다

System.out.println(model+"의 현재속도는 "+me.speed+"km");

}

public void speedUp(int speed1){

if(speed+speed1<=maxSpeed){

speed += speed1;

}else{

speed = maxSpeed;

}

}//speedUp end

public void speedDown(int speed1){

if(speed-speed1>=0){

speed -= speed1;

}else{

speed =0;

}

}//speedDown end

}//class end

결과3

2. 생성자 -객체 생성 관여

객체 생성시 단한번 수행

생성자 없이는 객체 생성이 불가

필드의 초기화가 주 이다

소스

public class Ex01 {

public static int num1; //static 을 사용하는 순간 ,값을 유지하며 공유하게된다

public int num2;        //초기화 하지않아도 defualt값 0으로 초기화


public Ex01(){ //생성자

System.out.println("객체 생성");

}

public static void main(String[] args) {

//생성자 호출 . 객체의 주소를 me에 저장 //객체를 생성하면서 생성자 안의 print문을 출력

Ex01 me = new Ex01();     

me.func1();

me.func2();

me.func1();

me.func3();

me.func1();

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

Ex01 me2 = new Ex01();     //다시 객체를 생성하지만 static 변수인 num1은 갑을 유지하기 때문에 1이다

me2.func1();

me2.func2();

me2.func1();

me2.func3();

me2.func1();

}//main end

public void func1(){        //결과출력

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

}

public void func2(){        //num1 +1

num1++;

}

public void func3(){        //num1의 수를 num2에 대입

num2=num1;

}

}//class end

결과

소스2

인자값을 받는 생성자

public class Ex02 {

String name = "모닝";

int speed;

int maxSpeed;

int minSpeed;

public Ex02(){ //기본 생성자

speed=0;

maxSpeed=80;

minSpeed=0;

}

public Ex02(String st){ //인자 값을 받는 생성자

name = st;

maxSpeed=80;

minSpeed=0;

}

public Ex02(String st, int a){

name =st;

maxSpeed=a;

minSpeed=0;

}

public static void main(String[] args) {

Ex02 me = new Ex02(); //내 객체 생성

me.speedUp(10);

System.out.println("내차 "+me.name+"의 속도는 "+me.speed+"km");

me.speedUp(30);

System.out.println("내차 "+me.name+"의 속도는 "+me.speed+"km");

me.speedDown(20);

System.out.println("내차 "+me.name+"의 속도는 "+me.speed+"km");

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

Ex02 you = new Ex02(); //너 객체 생성

you.name="스파크";

you.speedUp(50);

System.out.println("너차 "+you.name+"의 속도는 "+you.speed+"km");

you.speedDown(80);

System.out.println("내차 "+you.name+"의 속도는 "+you.speed+"km");

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

Ex02 that = new Ex02("올란도",250); //옆반 객체 생성 //해당 인자값이 있는 생성자로

that.speedUp(40);

that.speedUp(40);

that.speedUp(40);

that.speedUp(40);

that.speedUp(40);

that.speedUp(70);

System.out.println("옆반차 "+that.name+"의 속도는 "+that.speed+"km");

}//main end

public void speedUp(int a){        //스피드 업

if(speed+a<=maxSpeed){

speed += a;

}else { speed=maxSpeed; }

}

public void speedDown(int a){    //스피드 다운

if(speed-a>=0){

speed -= a;

}else { speed=minSpeed; }

}

}//class end

인자값을 받는 생성자를 사용할 경우

기본생성자 또한 반드시 작성해야한다

원래는 생성자는 자동 생성해주지만 이경우에는 자동으로 생성해주지 않는다

결과2

소스

Scanner 간단하게 사용하기

public class Ex03 {

Scanner sc;


public  Ex03(Scanner sc2){ //생성자

sc = sc2;

}

public static void main(String[] args) {

System.out.println("main start");

System.out.print("입력 : ");


Scanner sc = new Scanner(System.in); //모든 결정권이 main 에 있다

Ex03 me = new Ex03(sc);

System.out.println("main>>>"+sc.nextLine()); //입력 받으며 출력

me.func1(); //func1 호출

}//main end

public void func1(){

System.out.println("func1");

System.out.print("입력 : ");

String temp=sc.nextLine(); //func1입력

System.out.println("func1>>>"+temp);

func2();

}

public void func2(){

System.out.println("func2");

System.out.print("입력 : ");

System.out.println("func2>>>"+sc.nextLine()); //func2입력 받으며 출력

}

}//class end

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 업다운 게임  (0) 2016.07.18
DAY9 멤버필드  (0) 2016.07.15
Apache Ant  (0) 2016.07.13
DAY8 클래스 메소드  (0) 2016.07.13

+ Recent posts