-
JAVA_07_실습_함수1. JAVA/1.2 실습 2022. 3. 16. 20:57
문제1 ] 문자열로 계산식을 입력(정수만..)하면 식에 맞는 계산을 해서 출력해주는 프로그램을 작성하세요
단, 계산은 +,-,*,/,% 만 처리하기로 하고 각 연산은 함수로 분리해서 처리하세요
입력, 출력, 계산을 모두 분리해서 함수로 만들어서 하세요.public class Ex01 { public Ex01(){ Scanner sc = new Scanner(System.in); String[] str = setString(sc); double result = calc(str); toPrint(str); } public static void main(String[] args) { new Ex01();} //점수 입력 public String[] setString(Scanner s) { Scanner sc = new Scanner(System.in); System.out.print("계산할 수를 입력하시오"); String input = sc.nextLine(); String[] str= new String[input.length()]; for(int i = 0; i<input.length();i++) { char ch = input.charAt(i); if(ch<'0'||ch>'9') { str[0] = input.substring(0,i); str[1] = input.substring(i,i+1); str[2] = input.substring(i+1); } } return str; } //연산 public double calc(String[] ar) { double result = 0.0; String sik = ar[1]; int word1 = Integer.parseInt(ar[0]); int word2 = Integer.parseInt(ar[2]); switch(sik) { case "*": result = word1*word2; break; case "/": result = word1/(double)word2; break; case "+": result = word1+word2; break; case "-": result = word1-word2; break; } return result; } //출력 public void toPrint(String str[]) { System.out.print("입력한 수 : "); for(int i = 0; i<str.length;i++) { System.out.print(str[i]); } System.out.println(); System.out.printf("결과 : %s\n",calc(str)); } }
문제 2 ] 반지름 하나를 랜덤하게 입력한 후 원의 넓이, 원의 둘레를 계산해서 출력하는 프로그램을 작성하세요.
반지름 랜덤하게 만들어주는 함수
넓이 계산함수, 둘레 계산 함수, 출력을 해주는 함수
를 각각 만들어서 작성하세요.public class Ex02 { int rad; double arround, area; Circle c; Ex02(){ setting(); toPrint(); } public int setRnd() { return (int)(Math.random()*11+1); } public void setting() { c= new Circle(setRnd()); } public void toPrint() { rad = c.getRad(); arround = c.getArround(); area = c.getArea(); System.out.printf("반지름 길이 : %d \n둘레 : %6.2f , 넓이 : %6.2f",rad,arround,area); } public static void main(String[] args) { new Ex02(); } } class Circle { private int rad; private double area,arround; Circle(int rad){ this.rad =rad; setArea(); setArround(); } Circle(){} public int getRad() { return rad; } public void setRad(int rad) { this.rad = rad; } public double getArea() { return area; } public void setArea(double area) { this.area = area; } public void setArea() { area = Math.PI*rad*rad; } public double getArround() { return arround; } public void setArround() { arround = 2*rad*Math.PI; } }
문제3 ] 사각형을 넓이를 계산하는 프로그램을 작성하세요.
길이를 랜덤하게 만들어주는 함수
넓이를 계산해주는 함수
사각형의 내용을 출력해주는 함수public class Ex03 { int width,height,area; public Ex03(){ setting(); toPrint(); } public void setting() { width = (int)(Math.random()*21+10); height = (int)(Math.random()*21+10); } public int getArea(int num1,int num2) { return num1*num2; } public void toPrint() { area = getArea(width,height); System.out.printf("가로 : %d 세로 %d의 사각형 ==> 넓이 : %d\n",width,height,area); } public static void main(String[] args) { new Ex03();}
문제 4 ] 1차원 배열에 정수 10개를 입력한 후 합계와 평균을 구해주는 프로그램을 작성하세요.
배열에 정수를 랜덤하게 채워주는 함수
합계를 계산해주는 함수
평균을 계산해주는 함수
출력해주는 함수public class Ex04 { int[] array; int sum; double avg; public Ex04() { array = setArr(); toPrint(); } public int[] setArr() { array = new int[10]; for(int i = 0; i<array.length;i++) { array[i] = (int)(Math.random()*21+10); } return array; } public int getSum() { sum = 0; for(int i = 0; i<array.length;i++) { sum +=array[i]; } return sum; } public double getAvg() { avg = getSum()/array.length; return avg; } public void toPrint() { String str = ""; for(int i = 0; i<array.length;i++) { str += array[i]+" "; } System.out.println("랜덤한 임의의 10개의 수 \n"+str); System.out.println("\t합계 : "+getSum()+" 평균 : "+getAvg()); } public static void main(String[] args) { new Ex04();}
문제 5 ] 10 학생의 국어, 영어, 수학 점수를 랜덤하게 입력받아서 총점과 석차를 구하는 프로그램을 작성하세요.
각 학생의 점수입력, 총점계산, 석차계산, 출력은 함수로 처리하세요.public class Ex05 { int math,eng,korea,total,rank; int[][] student; public Ex05() { student = setting(); setTotal(); getRank(); toPrint(); setArr(); toPrint(); } public int getRnd() { return (int)(Math.random()*41+60); } public int[][] setting() { student = new int[10][5]; for(int i = 0; i<student.length;i++) { for(int j = 0; j<student[i].length;j++) { student[i][0] = getRnd(); student[i][1] = getRnd(); student[i][2] = getRnd(); } } return student; } public void setTotal() { for(int i = 0; i<student.length;i++) { total = 0; for(int j = 0; j<student[i].length;j++) { total+=student[i][j]; student[i][3] = total; } } } public void getRank() { for(int i = 0; i<student.length;i++) { int temp = 1; for(int j = 0; j<student.length;j++) { if(student[i][3]<student[j][3]) { temp++; } } student[i][4] = temp; } } public void setArr() { System.out.println("*********정렬 후***********"); for(int i = 0; i<student.length;i++) { for(int j = i+1; j<student.length;j++) { if(student[i][4]>student[j][4]) { for(int k = 0; k<student[i].length;k++) { int temp = student[i][k]; student[i][k] = student[j][k]; student[j][k] = temp; } } } } } public void toPrint() { for(int i = 0; i<student.length;i++) { for(int j = 0; j<student[i].length;j++) { korea = student[i][0]; eng = student[i][1]; math = student[i][2]; total = student[i][3]; rank = student[i][4]; } System.out.printf("[%d등] 국어 : %d, 영어 : %d, 수학 : %d , 총점 : %d \n",rank, korea,eng,math,total); } } public static void main(String[] args) { new Ex05();} //점수입력 }
'1. JAVA > 1.2 실습' 카테고리의 다른 글
JAVA_08_실습_객체(2) (0) 2022.03.20 JAVA_08_실습_객체(1) (0) 2022.03.16 JAVA_06_실습_배열 (0) 2022.03.16 JAVA_05_실습_반복문과 조건문3 (0) 2022.03.16 JAVA_05_실습_반복문과 조건문2 (0) 2022.03.14