개발일지?/java!
우당탕탕 java시작 : 오랜만에 자바 ArrayList, HashSet, Collections
규파팡
2023. 8. 8. 16:00
아프고 휴가 가고 갖은 핑계로 게을렀던 7말부터 8초...
일단 최종코드를 던지고 시작할 것.
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
public class Gugudan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> danArray = new ArrayList<>();
while (true) {
System.out.println("단 입력 (종료 및 입력값 전체출력은 0을 입력해주세요)");
int j = sc.nextInt();
if(j != 0) {
danArray.add(j);
System.out.println(j + " 17라인 단 결과: ");
}
for (int i = 1; i < 10; i++) {
System.out.println(j + "*" + i + "=" + i * j);
}
if (j == 0) {
System.out.println("지금까지 입력한 단수 출력");
HashSet<Integer> hSet = new HashSet<>(danArray);//중복단수제거
danArray.clear();//기존배열 삭제
danArray.addAll(hSet);//중복제거값다시추가
Collections.sort(danArray);//차순정렬
for (int i = 0; i < danArray.size(); i++) {
System.out.println(danArray.get(i) + " 30라인 단 결과: ");
for (int n = 1; n < 10; n++) {
System.out.println(danArray.get(i) + "*" + n + "=" + n * danArray.get(i));
}
}
break;
}
}
sc.close();
}
}
이렇게가 최종인데 아마 0 처리를 제대로 안 해줘서 수정할 예정인건비밀. 수정하면 지울 예정~
그래서 어딘지찾는흔적이있다 중간중간.... 프린트지옥 ㅠㅠㅠ
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
- 자바에서 제공하는 ArrayList, HashSet, Scanner와 Collections 클래스를 사용하기 위해 import 한다 Gugudan 클래스를 생성하고, main 메서드를 작성한다. Scanner를 이용하여 사용자 입력을 받을 준비를 한다. 정수형 데이터를 저장할 ArrayList danList를 생성한다.
while (true) {
System.out.println("단 입력 (종료 및 입력값 전체출력은 0을 입력해주세요)");
int j = sc.nextInt();
if(j != 0) {
danArray.add(j);
System.out.println(j + " 17라인 단 결과: ");
}
for (int i = 1; i < 10; i++) {
System.out.println(j + "*" + i + "=" + i * j);
}
- while 문을 사용하여 프로그램을 반복 실행한다. 사용자로부터 정수형 데이터를 입력받고, 입력된 값이 0이 아니면 danArray에 해당 값을 추가한다. 그리고 해당 단의 구구단을 출력한다. 사용자가 0을 입력하면, HashSet을 이용하여 danArray 내 중복된 단수를 제거한다. 중복이 제거된 값을 ArrayList에 다시 추가한 후, Collections 클래스를 이용하여 정렬한다. 그리고 정렬된 값들의 구구단을 출력하고, while 문을 빠져나가 프로그램을 종료한다. 사용자가 0을 입력하면, HashSet을 이용하여 danArray 내 중복된 단수를 제거한다. 중복이 제거된 값을 ArrayList에 다시 추가한 후, Collections 클래스를 이용하여 정렬한다. 그리고 정렬된 값들의 구구단을 출력하고, while 문을 빠져나가 프로그램을 종료한다.
중간에 0일 때처리를 안 해줬던 게 있었어서 0 입력 때 저장 안 되게 수정했는데 아마 처리가 안 됐으니깐 0이 출력되고 전체단이 출력되는 거겠지? 전부 while문에서 해결하려 해서 그런다고 하셨는데 왜 모르겠지........................
while문에서 해결 못해가지고 0단 출력되는 부분 찾아서 while문은 그대로 두고 안에다가 조건을 추가해서 해결했다.
다시 최종코드....
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
public class Gugudan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> danArray = new ArrayList<>();
while (true) {
System.out.println("단 입력 (종료 및 입력값 전체출력은 0을 입력해주세요)");
int j = sc.nextInt();
if(j !=0) {//조건문도 2개나눠놨었는데, 합쳐도되더라.... 신기해
System.out.println(j + "단 결과: ");
for (int i = 1; i < 10; i++) {
danArray.add(j);
System.out.println(j + "*" + i + "=" + i * j);
}
}
else {
System.out.printf("구구단 종료 전체 출력\n지금까지 입력한 단수 출력\n");
}
if (j == 0) {
HashSet<Integer> hSet = new HashSet<>(danArray);//중복단수제거
danArray.clear();//기존배열 삭제
danArray.addAll(hSet);//중복제거값다시추가
Collections.sort(danArray);//차순정렬
for (int i = 0; i < danArray.size(); i++) {
System.out.println(danArray.get(i) + "단 결과: ");
for (int n = 1; n < 10; n++) {
System.out.println(danArray.get(i) + "*" + n + "=" + n * danArray.get(i));
}
}
break;
}
}
sc.close();
}
}
이렇게 하면 0단은 더 이상 안 나온다! 애초에 20번 라인을 찾았어야 했는데...ㅎ