오늘 공부는 JAVA에서 입력과 출력이다.
오늘 공부로서
이제 프로그램 콘솔창에서 직접 입력을 넣을 수 있게 됬다.
먼저 콘솔 출력부터 살펴보면,
우리가 전까지 쓰던
println은 문자열을 출력하고 개행(다음행으로 넘어감)처리가 된다.
print는 문자열을 출력하고 개행되지 않는다.
+ 문자열 조합 출력
콘솔의 입력!
입력은 자바에서 원래 복잡한 기능이었으나,
자바 버전 5.0 이후로 이에 대한 대안이 나왔다. :)
바로 Scanner 클래스를 이용한 것인데, 먼저 방법은
먼저 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를 공부한 적이 없다구요, 윤성우)
'Programing > JAVA 일지' 카테고리의 다른 글
JAVA(7일차) - (3) 전화번호 관리 프로그램3 (0) | 2016.12.08 |
---|---|
JAVA(7일차) - (2) 전화번호 관리 프로그램2 (0) | 2016.12.08 |
JAVA(6일차) - (2) 전화번호 관리 프로그램1 (0) | 2016.12.08 |
JAVA(6일차) - (1) 접근제어, 클래스변수, 클래스 메소드, 메소드 오버로딩, String 클래스 (0) | 2016.12.07 |
JAVA(5일차) - (2) 클래스 패스, 패키지 (0) | 2016.12.07 |