ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.