원객체 생성
ArrayList 에 차례대로 반지름이 1인 원 부터 10인원을 입력.
차례대로 각각의 원 넓이 출력
10개의 원넓이 합산 하여 출력.
import java.util.ArrayList;
class Circle {
double radius;
Circle(double radius) {
this.radius = radius;
}
double getArea() {
return Math.PI * radius * radius;
}
}
public class Main {
public static void main(String[] args) {
ArrayList<Circle> circles = new ArrayList<>();
double totalArea = 0;
for (int i = 1; i <= 10; i++) {
Circle circle = new Circle(i);
circles.add(circle);
double area = circle.getArea();
System.out.println("반지름이 " + i + "인 원의 넓이: " + area);
totalArea += area;
}
System.out.println("10개의 원의 넓이 합계: " + totalArea);
}
}
ArrayList는 내부적으로 데이터를 배열로 저장하므로 인덱스를 통한 데이터 접근이 빠르지만, 데이터의 추가 및 삭제 시에는 배열의 크기를 조정해야 하므로 비용이 발생합니다.
LinkedList는 데이터를 노드로 저장하고 각 노드가 이전 및 다음 노드를 참조하므로 데이터의 추가 및 삭제가 빠르지만, 인덱스를 통한 데이터 접근 시에는 처음 또는 끝에서부터 노드를 순회해야 하므로 비용이 발생합니다.
제일 긴 별명을 출력하시오. (단, 각 별명의 길이는 모두 다르게 입력한다.)
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> nicknames = new ArrayList<>();
for (int i = 0; i < 5; i++) {
System.out.print((i + 1) + "번째 별명을 입력하세요: ");
nicknames.add(scanner.nextLine());
}
String longestNickname = nicknames.get(0);
for (String nickname : nicknames) {
if (nickname.length() > longestNickname.length()) {
longestNickname = nickname;
}
}
System.out.println("가장 긴 별명: " + longestNickname);
}
}
정수(-1이 입력될 때까지)>> 10 6 22 6 88 77 -1
가장 큰 수는 88
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<>();
while (true) {
System.out.print("정수(-1이 입력될 때까지)를 입력하세요: ");
int number = scanner.nextInt();
if (number == -1) {
break;
}
numbers.add(number);
}
int maxNumber = numbers.get(0);
for (int number : numbers) {
if (number > maxNumber) {
maxNumber = number;
}
}
System.out.println("가장 큰 수는 " + maxNumber);
}
}
6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F) >> A C A B F D
2.3333333333333335
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> grades = new ArrayList<>();
HashMap<String, Double> gradeToScore = new HashMap<>();
gradeToScore.put("A", 4.0);
gradeToScore.put("B", 3.0);
gradeToScore.put("C", 2.0);
gradeToScore.put("D", 1.0);
gradeToScore.put("F", 0.0);
for (int i = 0; i < 6; i++) {
System.out.print((i + 1) + "번째 학점을 입력하세요: ");
grades.add(scanner.nextLine());
}
double totalScore = 0;
for (String grade : grades) {
totalScore += gradeToScore.get(grade);
}
double averageScore = totalScore / grades.size();
System.out.println("평균 점수: " + averageScore);
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> names = new ArrayList<>();
for (int i = 0; i < 5; i++) {
System.out.print((i + 1) + "번째 이름을 입력하세요: ");
names.add(scanner.nextLine());
}
System.out.println("'김'씨 성을 가진 사람:");
for (String name : names) {
if (name.startsWith("김")) {
System.out.println(name);
}
}
}
}
List<String> list = Arrays.asList("Toy", "Box", "Robot", "Box");
list = new ArrayList<>(list);
ListIterator<String> litr = list.listIterator();
String str;
// 왼쪽에서 오른쪽으로
while(litr.hasNext()) {
str = litr.next();
System.out.print(str + '\t');
if(str.equals("Toy"))
litr.add("Toy2");
}
System.out.println();
// 오른쪽에서 왼쪽으로
while(litr.hasPrevious()) {
str = litr.previous();
System.out.print(str + '\t');
if(str.equals("Robot"))
litr.add("Robot2");
}
System.out.println();
// 다시 왼쪽에서 오른쪽으로
for(Iterator<String> itr = list.iterator(); itr.hasNext(); )
System.out.print(itr.next() + '\t');
System.out.println();
이 코드는 List와 ListIterator를 사용하여 리스트를 순회하고 수정하는 방법을 보여줍니다.
(1) 학생마다 Student 객체를 생성하고 4명의 학생 정보를 ArrayList 컬렉션에 저장한 후에, ArrayList의 모든 학생(4명) 정보를 출력하고 학생 이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.
학생 이름, 학과, 학번, 학점평균 입력하세요.
황기태, 모바일, 1, 4.1
이재문, 안드로이드, 2, 3.9
김남윤, 웹공학, 3, 3.5
최찬미, 빅데이터, 4, 4.25
이름: 황기태
학과: 모바일
학번: 1
학점평균: 4.1
이름: 이재문
학과: 안드로이드
학번: 2
학점평균: 3.9
이름: 김남윤
학과: 웹공학
학번: 3
학점평균: 3.5
이름: 최찬미
학과: 빅데이터
학번: 4
학점평균: 4.25
학생 이름 >> 최찬미
최찬미, 빅데이터, 4, 4.25
학생 이름 >> 이재문
이재문, 안드로이드, 2, 3.9
학생 이름 >> 그만
import java.util.ArrayList;
import java.util.Scanner;
class Student {
String name;
String department;
int id;
double gpa;
Student(String name, String department, int id, double gpa) {
this.name = name;
this.department = department;
this.id = id;
this.gpa = gpa;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Student> students = new ArrayList<>();
for (int i = 0; i < 4; i++) {
System.out.print("학생 이름, 학과, 학번, 학점평균 입력하세요: ");
String name = scanner.next();
String department = scanner.next();
int id = scanner.nextInt();
double gpa = scanner.nextDouble();
students.add(new Student(name, department, id, gpa));
}
for (Student student : students) {
System.out.println("----------------------------------");
System.out.println("이름: " + student.name);
System.out.println("학과: " + student.department);
System.out.println("학번: " + student.id);
System.out.println("학점평균: " + student.gpa);
}
while (true) {
System.out.print("학생 이름 >> ");
String name = scanner.next();
if (name.equals("그만")) {
break;
}
for (Student student : students) {
if (student.name.equals(name)) {
System.out.println(student.name + ", " + student.department + ", " + student.id + ", " + student.gpa);
break;
}
}
}
}
}