본문 바로가기
JAVA

[JAVA] 배열 / Scanner/ 난수

by KhyeonS 2022. 7. 22.

배열과 Scanner의 대해서 알아보자.


자바의 다차원 배열에서는 행의 수에 관심이 있고, 열에 대해서는 관심이 없다.

==>행열에 대해서 정밀하게 다루려면 Numpy를 사용하면 된다.

 

배열의 정렬

package java05;


public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] a = {22, 19, 72, 129, 34};
		int b = 5;//위 배열의 요소 개수
		int i, j, k;//사용할 변수 선언
		System.out.println("데이터를 표시");
		for (i=0; i<b; i++) { //b는 배열의 요소 개수, a.length로 대체
			System.out.print(a[i]+ ", ");
		}
		System.out.println("\n");
		for (j = 0; j < b-1; j++) { //b-1은 정렬이 끝난 인덱스 제외
			for(i=j+1; i<b; i++) {  //j+1은 정렬이 끝난 인덱스 제외
				if(a[j]> a[i]) {
					k= a[j];   //치환
					a[j] = a[i];
					a[i] = k;
				}
			}
		}
		System.out.println("정렬한 것 표시");
		for(i=0;i<b;i++) {
			System.out.print(a[i]+ ", ");
		}

	}

}


Scanner

Scanner scan = new Scanner (system.in);

int n = scan.nextInt();                    //정수 입력

String cha = scan.next();              //문자 입력

String str = scan.nextLine();         //문자열 입력

double dou = sca.nextDouble();   //실수입력

package java05;

import java.util.Scanner;

public class Test04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Enter any integer");
		Scanner scan1 = new Scanner(System.in);
		int n = scan1.nextInt();
		System.out.println("Enter any character");
		Scanner scan2 = new Scanner(System.in);
		String cha = scan2.next();
		System.out.println("Enter String");
		Scanner scan3 = new Scanner(System.in);
		String str = scan3.nextLine();
		System.out.println("Enter any double");
		Scanner scan4 = new Scanner(System.in);
		double dou = scan4.nextDouble();
		System.out.println("integer :"+n );
		System.out.println("character :"+cha );
		System.out.println("String :" +str );
		System.out.println("double :" +dou );
		
	}

}

스캔을 받아서 첫번째 점수와 두번째 점수를 +, -, /, %하는 계산기를 만들어라.

package java05;

import java.util.Scanner;

public class Test05 {

	public static void main(String[] args) {
		    int num1, num2;
		    String str="";	
		    Scanner scan1 = new Scanner(System.in); 
			System.out.println("첫번째 숫자를 입력하시오 : ");
			num1 = scan1.nextInt();
			System.out.println("두번째 숫자를 입력하시오 : "); 
			num2 = scan1.nextInt();
			System.out.println("수행할 연산자 입력하시오(+,-,*,/,%) : "); 
			Scanner scan2 = new Scanner(System.in); 
			str = scan2.next(); //+,-,*,/,%를 문자로 취급
			
		    String result="";	//문자열로 하면 전수 등도 들어감
			switch (str) { 
			case "+":
			result = num1 + " + " + num2 + " = " + (num1+num2); 
			break;
			case "-":
			result = num1 + "-" + num2 + " = " + (num1-num2); 
			break;
			case "*":
			result = num1 + "*" + num2 + " = " + (num1*num2); 
			break;
			case "/":
			result = num1 + "/" + num2 + " = " + (num1/num2); 
			break;
			default:
			result = "연산자가  올바르지 않습니다."; break;
			}
			System.out.println("연산결과는 : " + result);
			}
	}


난수 (random)발생

임의의 수를 발생(난수)시키는 메서드 Random()을 사용한다.

import java.until.Random 클래스 패키지가 필요하다.

숫자를 입력 받을 때에는 int rand = new Random().nextInt(9);식으로 사용

Math.random() 메써드를 사용해도 된다.

#random 메써드는 처음만 랜덤으로 발생하고 다음부터는 중복숫자가 발생한다.

 

random.setSeed(System.currentTimeMillis());

→ random한 숫자를 추출하기 위해서는 늘변하는 값이 있어야 하는데
     컴퓨터는 내장된 pseudo(system random number)number를 가지고 있다가 랜덤한
     숫자가 연산등에서 필요하면 추출한다.현재시간을 seed로 사용하면 현재시간은  늘 변하기때문에 
     랜덤한 숫자 추출의 seed로 완벽하다.!!

 

package java05;

import java.util.Random;

public class Test08 {

	public static void main(String[] args) {
		Random random = new Random();
		random.setSeed(System.currentTimeMillis()); 
		//random한 숫자를 추출하기 위해서는 늘변하는 값이 있어야 하는데
		//컴퓨터는 내장된 pseudo(system random number)number를 가지고 있다가 랜덤한
		//숫자가 연산등에서 필요하면 추출한다.현재시간을 seed로 사용하면 현재시간은  늘 변하기때문에 
		//랜덤한 숫자 추출의 seed로 완벽하다.!!
		System.out.println("랜덤한 n개 미만의 랜덤 정수 변환 : "+random.nextInt(46));
		System.out.println("랜덤한 Boolean값 반환 : "+random.nextBoolean());
		System.out.println("랜덤한 long값 실수 반환 : "+random.nextLong());
		System.out.println("랜덤한 Float값 실수 반환 : "+random.nextFloat());
		System.out.println("랜덤한 Double 실수 반환 : "+random.nextDouble());
		System.out.println("랜덤한 정규분포 난수 반환 : "+random.nextGaussian());
	}

}

 


난수로 로또 번호 만들기

package java05;

import java.util.Random;

public class Test09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random  rd = new Random();
		rd.setSeed(System.currentTimeMillis());
		for(int i=0; i<7; i++) {
			System.out.print("["+(rd.nextInt(45)+1)+"]");
		}
	
	}//main

} // 로또 번호에서는 자주 나오는 숫자가 있으므로 가중치를 고려하면 더 좋다.

난수로 구구단 만들기

package java05;

import java.util.Random;

public class Test12 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random rand = new Random();
		rand.setSeed(System.currentTimeMillis());
		int random = rand.nextInt(8) + 2; // 2~9까지 난수로 구구단 출력 . (9-2)+1
		for (int i=1; i<=9; i++) {
			System.out.println(random + " * "+i+" = "+ (random*i));
		}
	}

}

난수로 알파벳 대문자 출력

package java05;

import java.util.Random;

public class Test13 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random rand = new Random();
		rand.setSeed(System.currentTimeMillis());
		int random = rand.nextInt((90-65)+1)+65;
		System.out.println("문자1 :" + (char)random); // 문자로 추출
		
		int random2 = rand.nextInt(('Z'-'A')+1) + 'A';
		System.out.println("문자2 :"+(char)random2);
	}

}

 

 

'JAVA' 카테고리의 다른 글

[JAVA]클래스/ 메써드  (0) 2022.07.26
[JAVA] do while 문  (0) 2022.07.26
[JAVA] 제어문/배열  (0) 2022.07.21
[JAVA]문제 풀이 1  (0) 2022.07.20
[JAVA]연산자  (0) 2022.07.20

댓글