프로그램 문제

Scanner 클래스를 사용하여 6개 학점('A', 'B', 'C', 'D', 'F')을 문자로 입력받아 ArrayList에 저장하고,ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 평균을 출력하는 프로그램을..

낙산암 2021. 11. 8. 21:00

import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;

import jdk.javadoc.internal.doclets.toolkit.taglets.ThrowsTaglet;

class ListIntMax{

private ArrayList<Integer> arrList;
private int max;

public ListIntMax(){
    arrList = new ArrayList<>();
}

public int getMax() {
    max = 0;

    for (Integer i : arrList) {

        if(i > max)
            max = i;
    }

    return max;
}

public void setMax(int max) {
    this.max = max;
}

public ArrayList<Integer> getArrList() {

    try {
        Scanner sc = new Scanner(System.in);        
        System.out.print("정수(-1이 입력될 때까지)>>");

        while(true) {
            int n = sc.nextInt();

            if(n == -1) // 입력된 수가 -1이면
                break; //빠져나감

            arrList.add(n);
        }
    }catch (Exception e) {
        System.out.println("잘못된 입력입니다");
        getArrList();
    }        

    return arrList;
}

public void setArrList(ArrayList<Integer> arrList) {
    this.arrList = arrList;
}

}

public class ListMaxTest{
public static void main(String[] args) {

    try {

        ArrayList<Character> stack = new ArrayList<Character>();

        Scanner sc = new Scanner(System.in);
        System.out.print("6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F) >> ");

        for(int i=0; i<6; i++) {

            char c = sc.next().charAt(0);

            switch(c) {
            case 'A','a','B','b','C','c','D','d','F','f':
                break;
            default:
                throw new InputMismatchException(); 
            }

            stack.add(c);
        }

        int sum=0;

        for(int i=0; i<stack.size(); i++) {
            char c = stack.get(i);
            switch(c) {
            case 'A','a':
                sum+=4;
                break;
            case 'B','b':
                sum+=3;
                break;
            case 'C','c':
                sum+=2;
                break;
            case 'D','d':
                sum+=1;
                break;
            case 'F','f':
                sum+=0;
                break;
            default:
                throw new InputMismatchException(); 
            }
        }

        double avr = (double)sum/stack.size();
        System.out.println(avr);

    }catch (Exception e) {
        System.out.println("잘못된입니다. 처음부터 다시 입력해 주세요");            
        main(args);            
    }
}

}