오늘 공부는 JAVA에서 입력과 출력이다.
오늘 공부로서
이제 프로그램 콘솔창에서 직접 입력을 넣을 수 있게 됬다.

먼저 콘솔 출력부터 살펴보면,
우리가 전까지 쓰던


System.out.println(" ");

으로 사용했는데 이 것과 .print 둘 다 가능하다.
println은 문자열을 출력하고 개행(다음행으로 넘어감)처리가 된다.
print는 문자열을 출력하고 개행되지 않는다.

+ 문자열 조합 출력

System.out.printf("%d", 12);

12가 출력되는 문장이다. 이 구성은 C와 같다. C에서의 printf의 기능과 같다.

콘솔의 입력!
입력은 자바에서 원래 복잡한 기능이었으나,
자바 버전 5.0 이후로 이에 대한 대안이 나왔다. :)

바로 Scanner 클래스를 이용한 것인데, 먼저 방법은

Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();

위 코드는 사용자에게 입력을 받은 정수를 num1 에 저장하는 문장이다.
먼저 sc는 참조 변수이다. scanner 인스턴스를 만들어 입력을 받고
인스턴스의 nextInt 메소드를 이용하여 num1로 넘긴다.

Scanner의 주요 메소드들이다.
- public boolean nextBoolean()
- public byte nextByte()
- public short nextShort()
- public int nextInt()
-public long nextLong()
- public float nextFloat()
- public double nextDouble()
- public String nextLine()
-> nextLine()은 문자열의 끝을 enter입력을 통해서 종료를 표시한다.
나머지는 자료형의 입력에 따라 나누어진다.

(콘솔 입력 코드)


(결과화면)


위 결과를 보면 콘솔 입력이 구분되는 기준을 이해할 수 있다.
보면 처음에 1 엔터 2 엔터 3 입력하였을 때, 1, 2, 3 이 입력되었고
엔터도, 스페이스바도 치지 않았을 때 123 이 입력,
엔터후 2 입력했을 때 2, 스페이스바 후 3입력했을 때 3...

입력 콘솔에서 모든 공백이 데이터를 구분하는 기준이 된다.

그 다음으로서는 배열을 공부했다. 전에 학교 자료구조수업때 배열을 공부했었는데
내용은 그와 같다. C에서의 배열과 같다는 이야기다.
자바에서 배열의 특징은
배열도 인스턴스라는 것이다.
즉,!
배열을 생성할 때
다른 인스턴스를 생성하던 것처럼 new 를 포함해 생성해야된다는 점이다.
(하지만 꼭 new를 안써도 { } 중괄호를 이용해 생성할 수 도 잇다.)
선언은


int[] ref = new int[5];


이렇게 선언된 배열은 정수형 크기는 5인 배열을 선언한 것이다. 그렇게 되면 메모리 상에 정수형 크기 5인 배열의 공간이 확보된다. 그리고 ref에는 그 주소값이 들어가게 되는것이다. 즉 ref는 여기서 참조 변수이다.

문제 13-1
사용자로부터 입력 받은 수 중에 최대값과 최소값을 구하는 프로그램을 작성하세요.


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

import java.util.Scanner;

class Problem131
{
 public static int[] insertData()
 {
    Scanner keyboard = new Scanner(System.in);
 
    int[] arr = new int[10];     // 들어올 변수 선언

    for(int i=0; i<arr.length; i++)
    {
  System.out.printf("정수를 입력해 주세요.(%d개)", arr.length-i);
  arr[i] = keyboard.nextInt();
    }
    return arr;
 }


 public static int minValue(int[] arr)
 {
    int min = arr[0];

    for(int i = 1; i<arr.length; i++)
    {
  if(min>arr[i])
     min = arr[i];
    }
    return min;
 }

 public static int maxValue(int[] arr)
 {
    int max = arr[0];

    for(int i =1; i<arr.length; i++)
    {
  if(max<arr[i])
     max = arr[i];
    }
    return max;
 }

 public static void main(String[] args)
 {
    int[] arr = new int[10];

    System.out.println("10개의 정수 중 최대,최소값 구하기 프로그램 시작");
    arr = insertData();
   
    System.out.println("최대값은 : " + maxValue(arr));
    System.out.println("최소값은 : " + minValue(arr));
 }
}

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


작성한 코드이다.

클래스를 하나로 만들었고, main 메소드로 실행을 한다.
그리고 동작에 필요한 3개의 메소드들을 작성하였다.
(입력, 최대값구하기, 최소값구하기)

동작 확인

(문제13-1 결과)


배열은 10개로 지정했으므로 10개의 정수를 입력 받게 시작했다. 그리고 출력에서 몇개 남았는지 헷갈릴것 같아서 () 안에 몇개를 더 입력해야하는지 출력하였다.

최대 , 최소값 나온 것을 확인 할 수 있다. :)

for-each문
-> 자바 버전 5.0 이후부터 추가된것이다.

배열의 모든 값들에 대해 반복할 때 사용된다.
예를 들면 어떤 배열의 값들에 모두 1을 더한다든지 이런 데 사용된다.

예)


for(int e : arr)

        e++;


위와 같이 작성하면 모든 배열에 1을 더할 수 있다.

여기서 arr은 배열 이름이다. e는 모든 요소들을 지칭하는 변수로 나타내어진다.
(*그러나 이 구문이 끝나고 나면 변경 결과는 적용되지 않는다. 다시말하면 저 문장이 끝나고 다른 곳에서 저 배열을 확인하면 1이 증가되있지 않다.)

그러므로 배열의 내용을 바꾸지 못하지만  탐색같은 것을 할 때 더 유용하게 활용 될 수 있다.


(* 참조 - 난 정말 JAVA를 공부한 적이 없다구요, 윤성우)







+ Recent posts