
교재 : JAVA 프로그래밍 기초 - 18. 클래스 라이브러리
+ 자바의 정석[기초편]
클래스 라이브러리
JAVA 표준 클래스 라이브러리에 있는 다양한 클래스들 활용해보기!
클래스 사용 프로그램 순서
① 클래스 코드 작성 → 클래스 파일 생성
② 클래스를 이용한 코드 작성 → 클래스를 인스턴스화 하고 클래스의 멤버(변수&메소드)를 사용
클래스 라이브러리를 이용하면 ②번부터 코드 기술 가능
지금까지 사용해본 클래스 라이브러리
package chap18;
import java.util.Scanner;
public class Sample {
public static void main(String[] args) {
try {
// Scanner클래스 인스턴스화
Scanner sin = new Scanner(System.in);
System.out.print("이름 입력: ");
String name = sin.next(); // 키보드에서 문자입력
System.out.print("나이 입력: ");
int age = sin.nextInt(); // 키보드에서 숫자 입력
// 결과 표시
System.out.println("이름은 " + name + "이고 나이는 " + age + "살입니다.");
} catch (Exception e) {
System.out.println(e + "라는 예외가 발생하였습니다.");
}
}
}
▶ 해당 소스코드에서 사용되는 클래스
- Scanner : 텍스트 입력을 처리하는 클래스
- System : 시스템과 관련된 다양한 기능을 제공하는 클래스
- String : 문자열을 다루는 클래스
- Exception : 예외를 다루는 클래스
String 클래스
String 클래스 : 문자열을 위한 클래스
문자열을 저장하고 이를 다루는데 필요한 메소드를 함께 제공함
[문자열 만드는 법]
① 문자열 리터럴을 지정
String str = “Hello World!”;
② String클래스의 생성자를 사용
String str = new String(“Hello World!”);
String 클래스 메소드
char charAt(int index)
지정된 위치(index)에 있는 문자 하나를 알려준다.
String str = "Java 프로그래밍!"; // 문자열 설정
char ch1 = str.charAt(0); // 문자 얻기
int length()
문자열의 길이를 알려준다.
String str = "Java 프로그래밍!"; // 문자열 설정
int len = str.length(); // 문자열 길이
boolean equals(Object anObject)
매개변수로 받은 문자열(obj)과 String인스턴스의 문자열을 비교한다.
같으면 true, 다르면 flase
String s = "Hello"
boolean b =s.equals("Hello"); // true
boolean b2 = s.equals("hello"); // false
※ 주의 : 'equals' 메소드는 문자열을 비교할 때 사용,
'=='는 기본 자료형(int, double, boolean 등)을 비교할 때 사용
package chap18;
public class StringEquals {
public static void main(String[] args) {
// 변수선언
String str1 = "안녕하세요.";
String str2 = "방가방가";
String str3 = "안녕!";
String str4 = "방가방가";
// 변수와 지정된 문자열로 비교
if (str1.equals("안녕하세요.")) {
System.out.println("str1(" + str1 + ")의 문자열은 안녕하세요와 동일합니다");
}
// 변수와 변수로 비교하기
if (str2.equals(str4)) {
System.out.println("str2(" + str2 + ") 및 str4(" + str4 + ")의 문자열은 동일합니다.");
}
// 문자열이 지정된 문자열과 다른 경우의 판정 방법
if (!str2.equals(str3)) {
System.out.println("str2(" + str2 + ") 및 str3(" + str3 + ")의 문자열은 동일하지 않합니다.");
}
}
}
String substring(int beginIndex, int endIndex)
주어진 시작 위치(bgin)부터 끝 위치(end)범위에 포함된 문자열을 얻는다.
시작 위치는 범위에 포함 / 끝 위치는 범위에 포함 X
String s = "java.lang.Object";
String c = s.substring(10); // c = "Object"
String b = s.substring(5, 9); // b = "lang"
public String [] split(String regex)
기호로 문자열 분할하기
regex : 문장 분할하는 기호 ( , : / )
String str = "AB:CD:EF";
String[] strArray = str.split(":");
래퍼 클래스 (wrapper class)
기본형 변수도 객체로 다뤄야하는 경우에 래퍼 클래스를 사용한다.
래퍼 클래스들은 객체생성 시에 생성자의 인자로 주어진 각 자료형에 알맞은 값을 내부적으로 저장하고 있다.
기본형 | 래퍼클래스 | 생성자 | 활용예 |
boolean | Boolean | Boolean(boolean value) Boolean(String s) |
Boolean b = new Boolean(true); Boolean b2 = new Boolean("true"); |
char | Character | Character(char value) | Character c = new Character('a'); |
byte | Byte | Byte (byte value) Byte (String s) |
Byte b = new Byte(10); Byte b2 = new Byte("10"); |
short | Short | Short (short value) Short (String s) |
Short s = new Short(10); Short s2 = new Short("10"); |
int | Integer | Integer (int value) Integer (String s) |
Integer i = new Integer(100); Integer i2 = new Integer("100"); |
long | Long | Long (long value) Long (String s) |
Long 1 = new Long(100); Long 12 = new Long("100"); |
float | Float | Float (double value) Float (float value) Float (String s) |
Float f = new Float(1.0); Float f2 = new Float(1.0f); Float f3 = new Float("1.0f"); |
double | Double | Double (double value) Double (String s) |
Double d = new Double(1.0); Double d2 = new Double("1.0"); |
클래스형 변수
클래스형 변수(객체 변수) : 객체를 가리키는 변수 (변수내에 객체의 위치 정보를 보관 유지함)
※ 강사님이 인스턴스 변수, 참조형 변수 등을 더 큰 의미로 클래스형 변수라고 총칭하는듯 하다.. 이거 때문에 너무 헷갈렸음..
애초에 클래스 자체가 '객체를 정의해 놓은 것'이니 클래스형이란 객체를 정의해 놓은 형태로 봐도 될 듯 하다.
클래스도 형태가 되므로 메소드/인수/반환값에 이용할 수 있다.
인스턴스 변수 : 같이 합치지 못하고 따로 설정해야하는 변수에 사용
인스턴스가 생성될 때 마다 만들어지므로 인스턴스마다 각기 다른 값을 유지한다.
omputer com = new Computer(); // Computer 객체변수 com
클래스형 변수는 클래스 변수와 다름! 차이점을 알아두자.
클래스 변수(static 변수) : 변수 앞에 static 키워드가 붙는다.
모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다.
(메모리를 공유하기 위한 용도로 자주 사용된다.)
객체 변수 대입하기
클래스명 변수1 = new 클래스명();
클래스명 변수2;
변수2 = 변수1;
Computer com1 = new Computer();
Computer com2;
com2 = com1;
기본 데이터형(기본형 매개변수)과 다르게 오브젝트내의 데이터가 카피되지 않고 오브젝트의 주소가 복사되는 것.(참조형)
기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.(read only) - 값이 복사됨
참조형 매개변수 : 변수의 값을 읽고 변형할 수 있다.(read & write) - 인스턴스 주소가 복사됨
메소드 인수에 참조형 변수 넣기
package chap18;
public class Computer2 {
private String os;
private int memory;
// 생성자
public Computer2() {
this.os = "";
this.memory = 0;
System.out.println("PC를 만들었습니다.");
}
/*
* 접근자 메소드
*/
public String getOs() {
return os;
}
public int getMemory() {
return memory;
}
public void setOs(String os) {
this.os = os;
}
public void setMemory(int memory) {
this.memory = memory;
}
public void show() {
System.out.println("PC OS는 " + this.os + "입니다.");
System.out.println("메모리는 " + this.memory + "GB입니다.");
}
}
package chap18;
public class ObjectAsArgument {
/*
* 인수에 클래스형 변수의 Computer2 객체 정보를 받아, OS의 메모리 크기 체크를 합니다.
*/
public static void checkMemory(Computer2 com) {
int reasonableMemory; //알맞은 메모리값 저장변수
String os = com.getOs(); // 인수의 클래스형 변수로부터 OS명을 얻음
int memory = com.getMemory(); //인수의 클래스형 변수로부터 메모리 크기 얻음
com.show(); //PC정보 표시
//OS명으로부터 알맞은 메모리 크기 판정
if (os.equals("Windows11")) {
//OS Windows 11인 경우
reasonableMemory = 32;
} else if (os.equals("Windows 10")) {
//OS Windows 10인 경우
reasonableMemory = 16;
} else {
// 기타
reasonableMemory = 8;
}
// 알맞은 메모리 크기 확인
if (memory >= reasonableMemory) {
System.out.println("메모리 크기는 알맞습니다.");
} else {
System.out.println("메모리를 추가하는 것이 좋습니다.");
}
System.out.println("======================================");
}
public static void main(String[] args) {
//Computer2클래스 객체화
Computer2 com1 = new Computer2();
Computer2 com2 = new Computer2();
//PC정보 설정
com1.setOs("Windows11");
com1.setMemory(32);
com2.setOs("Windows11");
com2.setMemory(16);
// 인수에 클래스형 변수(객체)를 넘기는 메소드 호출
System.out.println("======================================");
checkMemory(com1);
checkMemory(com2);
}
}
참조형 반환타입(리턴 값)
매개변수뿐만 아니라 반환타입도 참조형이 될 수 있다.
반환하는 값의 타입이 참조형인 것.
클래스형 배열 (객체 배열)
객체를 배열로 다루는 것.
객체 배열은 참조변수들을 하나로 묶은 참조변수 배열이다.
클래스명[] 배열명;
배열명 = new 클래스명[요소수];
// 또는
클래스명[] 배열명 = new 클래스명[요소수];
객체 배열을 생성하는 것은 그저 객체를 다루기 위한 참조변수들이 만들어진 것이고 기본값인 null이 자동으로 초기화 된다. 객체 배열을 생성하면 객체 배열의 각 요소에 객체를 생성하여 저장하는 것을 잊지 말자!
// 배열의 초기화 블럭 사용
클래스명[] 배열명 = {요소(), 요소(), 요소()}
Computer[] coms = new Computer[3]; // 참조변수 배열(객체 배열)을 생성
// 객체를 생성해서 배열의 각 요소에 저장
coms[0] = new Computer();
coms[1] = new Computer();
coms[2] = new Computer();
다뤄야할 객체의 수가 많을 때는 for문을 사용한다.
Computer[] coms = new Computer[100]; for (int i = 0; i<Computer.lenght; i++){ coms[i] = new Computer(); }
Array List 클래스
요소 수가 정해지지 않은 배열
- Array List는 List인터페이스를 구현한다.
- 데이터의 저장순서가 유지됨
- 중복을 허용함
- Object 배열을 이용해서 데이터를 순차적으로 저장
- 가변적 배열 (더이상 저장할 공간이 없으면 데이터량에 맞춰 배열의 사이즈가 자동으로 바뀜)
- 클래스 라이브러리 중에서 가장 많이 사용하는 컬렉션 클래스
[ArrayList클래스 사용방법]
- ArrayList 클래스를 이용하고 싶은 클래스로 임포트 한다.
import java.util.*; // java.util패키지 모두 불러오기도 가능 import java.util.ArrayList; // 해당 클래스 임포트
- 취급하고 싶은 데이터타입을 선택해 ArrayList클래스의 인스턴스화를 한다.
- ArrayList 배열에 데이터 추가/변경/삭제/꺼내기 등을 실시할 때 전용 메소드를 이용한다.
ArrayList 배열 선언
기본 자료형으로 정의할 수 없음 → 기본 자료형 래퍼클래스 이용
ArrayList <취급자료형> 객체변수명 = new ArrayList<취급자료형>(초기크기값);
ArrayList<Integer> intList = new ArrayList<Integer>(); //정수형을 취급하는 가변길이 배열
ArrayList<String> strList = new ArrayList<String>(); //문자열형을 처리하는 가변길이 배열
ArrayList<Computer> comList = new ArrayList<Computer>(); //Computer형을 취급하는 가변길이 배열
.add();
ArrayList의 마지막에 데이터(객체) 추가. (배열에 데이터 저장)
객체변수명.add(데이터); // ArrayList의 마지막에 객체 추가
객체변수명.add(인덱스, 객체(데이터); // 지정된 인덱스 위치에 객체 저장
.get();
지정된 인덱스 위치에 저장된 객체(데이터)를 반환.
객체변수명.get(인덱스);
[add&get 메소드를 사용한 예제]
package chap18;
import java.util.ArrayList;
public class UseArrayList2 {
public static void main(String[] args) {
//문자열을 처리하는 ArrayList배열
ArrayList<String> strList = new ArrayList<String>();
//1번째 문자열 추가 및 표시
strList.add("Good morning");
System.out.println("1번째 저장 데이터는 " + strList.get(0) + "입니다.");
//2번째 문자열 추가 및 표시
strList.add("Hello");
System.out.println("2번째 저장 데이터는 " + strList.get(1) + "입니다.");
//3번째 문자열 추가 및 표시
strList.add("Bye");
System.out.println("3번째 저장 데이터는 " + strList.get(2) + "입니다.");
}
}
.size();
ArrayList에 저장된 객체의 개수를 반환.
객체변수명.size();
package chap18;
import java.util.ArrayList;
public class UseArrayList3 {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
strList.add("Good morning");
trList.add("Hello");
strList.add("Bye");
System.out.println("1번째 저장 데이터는 " + strList.get(0) + "입니다.");
System.out.println("2번째 저장 데이터는 " + strList.get(1) + "입니다.");
System.out.println("3번째 저장 데이터는 " + strList.get(2) + "입니다.");
//ArrayList배열의 저장 데이터수 표시
System.out.println("저장 데이터 수는 " + strList.size() + "입니다.");
}
}
ArrayList에서의 for문
package chap18;
import java.util.ArrayList;
public class UseArrayList4 {
public static void main(String[] args) {
// 문자열을 처리하는 ArrayList배열
ArrayList<String> strList = new ArrayList<String>();
//문자열 추가
strList.add("Good morning");
strList.add("Hello");
strList.add("Bye");
// 반복처리를 이용하여 전건 표시
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+" 2번째 저장 데이터는 " + strList.get(i) + "입니다.");
}
}
}
* 조건식에서 .size() 사용
* get()으로 for문으로 반복한 i 값 불러오기
확장된 for문
선언한 변수에 배열이나 컬렉션의 값이 차례로 대입되어 반복.
배열의 0번째 인덱스부터 끝까지 반복처리 된다.
for(변수의 타입 요소 값을 저장할 변수명:배열명 또는 컬렉션명)
{
반복할 실행문
}
ArrayList<String> strList = new ArrayList<String>();
・・・
//확장된 for문을 사용하여 저장된 데이터를 순서대로 참조
for(String strData : strList){
System.out.println("저장데이터는 「" + strData + "입니다.");
}
.set();
객체(데이터)를 지정된 인덱스 위치에 저장한다.
이미 저장되어 있는 데이터를 변경.
객체변수명.set(인덱스, 데이터);
package chap18;
import java.util.ArrayList;
public class UseArrayList5 {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
// 문자열 추가
strList.add("Good morning");
strList.add("Hello");
strList.add("Bye");
// 반복처리를 이용하여 전건 표시
System.out.println("* 변경 전 데이터 목록");
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번쨰 저장 데이터는 " + strList.get(i) + "입니다.");
}
// ★3번째 데이터 변경
strList.set(2, "Good Bye!");
System.out.println("\n* 변경후 데이터 목록");
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번째 저장데이터는 " + strList.get(i) + "입니다.");
}
}
}
.remove();
지정한 객체를 제거한다.
객체변수명.remove(인덱스);
package chap18;
import java.util.ArrayList;
public class UseArrayList6 {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
//문자열 추가
strList.add("Good morning");
strList.add("Hello");
strList.add("Bye");
System.out.println("* 변경 전 데이터 목록");
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번째 추가 데이터는 " + strList.get(i) + "입니다.");
}
//3번째 데이터 변경
strList.set(2, "Good Bye!");
//2번째 데이터 삭제
strList.remove(1); //★데이터 삭제
System.out.println("\n* 변경 후 데이터 목록");
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번째 추가 데이터는 " + strList.get(i) + "입니다.");
}
}
}
.indexOf();
지정된 객체가 저장된 위치를 찾아 반환.
객체변수명.indexOf(검색할 데이터);
package chap18;
import java.util.ArrayList;
public class UseArrayList7 {
public static void main(String[] args) {
//검색결과의 인덱스 저장변수
int index;
// 문자열을 처리하는 ArrayList배열
ArrayList<String> strList = new ArrayList<String>();
//문자열 추가
strList.add("Good morning");
strList.add("Hello");
strList.add("Bye");
System.out.println("* 변경 전 데이터 목록 ");
for(int i=0; i<strList.size(); i++){
System.out.println((i+1)+"번째 저장 데이터는 " + strList.get(i) + "입니다.");
}
//ArrayList배열 저장 데이터에서 검색
System.out.println("======================================");
index = strList.indexOf("Hello");
//검색결과 확인
if(index != -1){
System.out.println("Hello는 요소 번호 " + index + "에 저장됩니다. ");
}else{
System.out.println("Hello을 찾을 수 없습니다.");
}
//3번째 데이터 변경
strList.set(2, "Good Bye!");
//2번째 데이터 삭제
strList.remove(1);
System.out.println("\n* 변경 후 데이터 목록");
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번째 저장 데이터는 " + strList.get(i) + "입니다.");
}
//★ArrayList배열 저장 데이터에서 검색
System.out.println("======================================");
index = strList.indexOf("Hello");
// 검색결과 확인
if(index != -1){
System.out.println("Hello는 요소번호 " + index + "에 저장됩니다. ");
}else{
System.out.println("Hello를 찾을 수 없습니다.");
}
}
}
검색한 객체(데이터)가 발견 되었을 경우 인덱스 위치가 반환되고,
발견되지 않은 경우에는 -1 값이 된다.
.clear();
ArrayList를 완전히 비움. (삭제)
객체변수명.clear();
.isEmpty()
ArrayList가 비어있는지 확인.
객체 변수명.isEmpty();
[clear하고 isEmpty로 완전히 비어있는지 확인하는 예제]
package chap18;
import java.util.ArrayList;
public class UseArrayList8 {
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
//문자열 추가
strList.add("Good morning");
strList.add("Hello");
strList.add("Bye");
//반복처리를 이용하여 전건 표시
System.out.println("* 지우기 전의 데이터 일람 ");
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번째 저장 데이터는 " + strList.get(i) + "입니다.");
}
//ArrayList배열 저장된 데이터 삭제
strList.clear();
System.out.println("\n* 지우기 후 데이터 목록 ");
//ArrayList배열 저장 데이터 수 확인
if(strList.isEmpty()){
System.out.println("데이터 1개 없음 ");
}else{
for(int i=0; i<strList.size(); i++ ){
System.out.println((i+1)+"번째 저장 데이터는 " + strList.get(i) + "입니다.");
}
}
}
}
ArratList배열을 인수로 하는 메소드
package chap18;
import java.util.ArrayList;
public class UseArrayList9 {
/*
* 인수에 문자열을 취급하는 ArrayList배열을 받아, 그 배열의 모든 데이터를 표시함
*/
public static void showArrayListData(ArrayList<String> tmpStrList){
for(int i=0; i<tmpStrList.size(); i++ ){
System.out.println((i+1)+"번째 저장 데이터는 " + tmpStrList.get(i) + "입니다.");
}
}
public static void main(String[] args) {
ArrayList<String> strList = new ArrayList<String>();
//문자열 추가
strList.add("Good morning");
strList.add("Hello");
strList.add("Bye");
//직접 만든 메소드를 이용하여 전건 표시
System.out.println("* 지우기 전의 데이터 목록");
showArrayListData(strList);
//ArrayList배열 초기화
strList.clear();
System.out.println("\n* 지우기 후 데이터 목록 ");
//ArrayList배열 데이터 저장 검사
if(strList.isEmpty()){
System.out.println("데이터 1개 없음 ");
}else{
showArrayListData(strList);
}
}
}
연습문제
18.8. 연습문제
<질문1> 다음의 설문 ①~⑤에 대해 ○인가×로 대답하십시오.
① Java에는 다양한 기능을 가진 클래스가 많이 제공되고 있다. O
② 클래스는 메소드의 인수나 반환값의 형태로서 정의할 수 없다. X
③ 클래스형의 변수는 메소드의 인수나 반환값에 이용할 수 있다. O
④ 클래스형 변수끼리의 대입은 별개의 오브젝트로서 카피된다. X (위치를 가져오는 것)
⑤ 클래스형의 배열은 가변 길이의 배열이 된다. X
<질문2> 다음의 설문 ①~⑤에 사용하는 String 클래스의 메소드를 선택지 후보로부터 선택해 대답해 주세요.
옵션
equals substring length charAt split
① 문자열로부터 임의의 1문자를 취득한다. chatAt
② 문자열을 지정한 키워드로 분할하여 취득한다. split
③ 문자열형끼리의 비교를 실시한다. equals
④ 문자열로부터 임의의 길이로 문자열을 분할하여 취득한다. substring
⑤ 문자열의 길이를 얻는다. length
<질문3> 아래에 나타내는 소스 코드 Practice1801.java를 실행했을 경우, 실행 결과의 공백 ①~⑧에 들어가는 책의 타이틀과 가격을 각각 대답해 주세요.

① 소스폴더: javabasic/src
② 패키지: chap18exercise
③ 이름: Books
① 소스 폴더: myproj_basic/src
② 패키지: kr.co.f1.basic.ch09exercise
③ 이름: Practice1801
Books.java
package chap18excercise;
public class Books {
private String title; //제목
private int price; //가격
// 생성자
public Books(String title,int price){
this.title = title;
this.price = price;
}
//인수를 각 필드변수로 설정하는 메소드
public void setBookInfo(String title,int price){
this.title = title;
this.price = price;
}
// 도서정보를 화면에 표시하는 방법
public void showBookInfo(){
System.out.println("이 책의 제목: " + this.title );
System.out.println("이 책의 가격: " + this.price + "원");
System.out.println("=================================================");
}
}
Practice1801.java
package chap18excercise;
public class Practice1801 {
public static void main(String[] args) {
System.out.println("=================================================");
Books book1 = new Books("Java 입문", 29800);
book1.showBookInfo(); //①과 ②의 결과 표시 - Java 입문, 29800
book1 = new Books("Java 알고리즘 ",15000);
book1.showBookInfo(); //③과 ④의 결과 표시 - Java 알고리즘, 15000
Books book2 = book1;
book2.showBookInfo(); //⑤과 ⑥의 결과 표시 - Java 알고리즘, 15000
book2.setBookInfo("Java Spring 프로그래밍 ", 32000);
book1.showBookInfo(); //⑦과 ⑧의 결과 표시 - Java Spring 프로그래밍, 32000
}
}
<질문4> 이하에 나타내는 Practice1802.java의 소스 코드를, Books 오브젝트 배열을 이용한 내용의 Practice1803.java를 작성해 주세요.
작성팁
① Books 오브젝트 배열을 요소수 「5」로 정의합니다.
② 반복문을 이용하여 Books 객체 배열에 각 요소에 객체를 생성하여 대입합니다.
③ 반복문을 이용하여 Books 객체 배열의 각 요소에서 showBookInfo 메서드를 호출합니다.
① 소스 폴더:javabasic/src
② 패키지: chap18exercise
③ 이름: Practice1802

1.
Books[] bookArray = new Books[5];
2.
for(int i=0; i<bookArray.length;i++) {
bookArray[i] = new Books(title[i], price[i]);
}
3.
for(int i = 0; i< bookArray.length;i++{
bookArray[i].showBookInfo();
}
<질문5> Practice1804.java 소스 코드를 아래의 변경 사양에 따라 Practice1805.java를 작성하십시오.
변경 사양
① main 메소드의 점수 저장용 배열을, 통상의 int 배열로부터 정수치를 취급하는 ArrayList 배열로 변경한다.
② ①의 변경에 맞추어 main 메소드 처리 내부를 ArrayList 배열을 이용한 방법으로 변경한다.
③ showSumScore 메서드의 인수 형식을 ArrayList로 변경합니다.
④ ③의 변경에 맞게 showSumScore 메소드 처리 내부를 ArrayList 배열을 이용한 방법으로 변경한다.
① 소스 폴더: javabasic/src
② 패키지: chap18exercise
③ 이름: Practice1804
package chap18excercise;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Practice1804 {
/*
* 점수가 저장된 배열을 인수로 받아 그 점수를 모두 표시하고 합계를 계산하여 표시함
*/
public static void showSumScore(int[] score){
int sum=0; //총점 저장용 변수
for(int i=0;i<score.length;i++){
System.out.println((i+1)+"의 점수는 " + score[i] + "입니다");
sum += score[i];
}
System.out.println("총합계는 「" + sum + "입니다.");
}
public static void main(String[] args) {
int count = 0; //카운트 저장변수
int[] score = new int[5]; //점수 저장용 배열
//Scanner클래스 객체 생성
Scanner sin = new Scanner(System.in);
//반복처리로 5명분의 점수 입력 실시
while(true){
try{
// 키보드 점수 입력
System.out.print("점수 입력 = ");
score[count] = sin.nextInt();
if(count==4){
//5회 입력 반복
break;
}
//카운트 증가
count++;
}catch(InputMismatchException e){
System.out.println("양수값 입력하세요");
// 입력버퍼 지우기
sin.nextLine();
}
}
System.out.println("=========================");
//모든 입력점과 총점을 표시하는 메소드 호출
showSumScore(score);
}
}
package jokun.chap18;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Practice1804 {
/*
* 점수가 저장된 배열을 인수로 받아 그 점수를 모두 표시하고 합계를 계산하여 표시함
*/
public static void showSumScore(ArrayList<Integer> score){
int sum=0; //총점 저장용 변수
for(int i = 0; i < score.size(); i++){
System.out.println((i+1)+"의 점수는 " + score.get(i) + "입니다");
sum += score.get(i);
}
System.out.println("총합계는 「" + sum + "입니다.");
}
public static void main(String[] args) {
int count = 0; //카운트 저장변수
// int[] score = new int[5]; //점수 저장용 배열
ArrayList score = new ArrayList(5);
//Scanner클래스 객체 생성
Scanner sin = new Scanner(System.in);
//반복처리로 5명분의 점수 입력 실시
while(true){
try{
// 키보드 점수 입력
System.out.print("점수 입력 = ");
score.add(count, sin.nextInt());
if(count==4){
//5회 입력 반복
break;
}
//카운트 증가
count++;
}catch(InputMismatchException e){
System.out.println("양수값 입력하세요");
// 입력버퍼 지우기
sin.nextLine();
}
}
System.out.println("=========================");
//모든 입력점과 총점을 표시하는 메소드 호출
showSumScore(score);
}
}
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 자바의 정석 (기초편) : 연습문제 답안지 다운.pdf (0) | 2022.06.15 |
---|---|
[JAVA] JAVA 프로그래밍 기초 교육 : 파일 입출력 (0) | 2022.05.27 |
[JAVA] JAVA 프로그래밍 기초 교육 : 예외 처리 (0) | 2022.05.26 |
[JAVA] JAVA 프로그래밍 기초 교육 : 패키지 & 임포트 (0) | 2022.05.26 |
[JAVA] JAVA 프로그래밍 기초 교육 : 클래스 멤버 & 인스턴스 멤버 (0) | 2022.05.26 |