package com.day5;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
//10명 이내의 이름과 점수를 입력받아 점수가 높은 사람에서 낮은 사람 순으로 출력
Scanner sc = new Scanner(System.in);
// Scanner의 객체를 생성함.//메모리를 할당함 등등...
int i,j,inwon,temp1;
String temp2;
int[] score;
String[] name;
do{
System.out.print("인원수[1~10]? ");//3
inwon = sc.nextInt();
}while(inwon<1 || inwon>10);
//객체 생성(메모리 할당)
score = new int[inwon];
name = new String[inwon];
//인원수 만큼 이름과 점수 입력
for(i=0;i<inwon;i++){
System.out.print((i+1)+"번째 이름?");
name[i] = sc.next();
System.out.print("점수?");
score[i] = sc.nextInt();
}
//정렬
for(i=0;i<inwon-1;i++){
for(j=i+1;j<inwon;j++){
if(score[i]<score[j]){
temp1 = score[i];
score[i] = score[j];
score[j] = temp1;
temp2 = name[i];
name[i] = name[j];
name[j] = temp2;
}
}
}
//출력
for(i=0;i<inwon;i++){
System.out.printf("%6s %4d\n",name[i],score[i]);
}
sc.close();
}
}
==Console==
<로또>
//소스코드
package com.day5;
import java.util.Random;
public class Test4 {
public static void main(String[] args) {
//1~45까지의 수 중 6개의 난수를 발생시켜 크기 순으로 출력
Random rd = new Random(); //copy의 개념
int[] num = new int[6];
int i,j,su,temp;
su = 0;
// 반복의 횟수를 알 수 없을 때 사용
while(su<6){
num[su] = rd.nextInt(45)+1; //nextInt(45) : 0에서 44번까지의 45개 숫자를 꺼냄
for(i=0;i<su;i++){
if(num[i]==num[su]){
su--;
break;
}
}
su++;
}
//정렬
for(i=0;i<num.length-1;i++){
for(j=i+1;j<num.length;j++){
if(num[i]>num[j]){
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//출력
for(int n : num){
System.out.printf("%4d",n);
}
System.out.println();
}
}
==Console==난수를 발생시켜 로또번호가 나옴
<성적으로 석차를 구하기>
//소스코드
package com.day5;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
//10명 이내의 이름과 점수를 입력받아 석차(rank)를 구하시오.
//석차가 높은 사람에서 낮은 사람 순으로 출력
Scanner sc = new Scanner(System.in);
int i,j,inwon;
int[] score;
String[] name;
int[] rank;
do{
System.out.print("인원수[1~10]? ");//3
inwon = sc.nextInt();
}while(inwon<1 || inwon>10);
//객체 생성(메모리 할당)
score = new int[inwon];
name = new String[inwon];
rank = new int[inwon];
//인원수 만큼 이름과 점수 입력
for(i=0;i<inwon;i++){
rank[i]++;
}
for(i=0;i<inwon;i++){
System.out.print((i+1)+"번째 이름?");
name[i] = sc.next();
System.out.print("점수?");
score[i] = sc.nextInt();
}
//석차계산
for(i=0;i<inwon-1;i++){
for(j=i+1;j<inwon;j++){
if(score[i]>score[j]){
rank[j]++;
}else if(score[i]<score[j]){
rank[i]++;
}
}
}
//출력
for(i=0;i<inwon;i++){
System.out.printf("%6s %4d %4d\n",name[i],score[i],rank[i]);
}
sc.close();
}
}
==Console==
<앞의 방법과 다르게 1등 순서대로 나오게 하기>
package com.day5;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
//10명 이내의 이름과 점수를 입력받아 석차(rank)를 구하시오.
//석차가 높은 사람에서 낮은 사람 순으로 출력
Scanner sc = new Scanner(System.in);
int i,j,inwon,temp1;
String temp2;
int[] score;
String[] name;
int[] rank;
do{
System.out.print("인원수[1~10]? ");//3
inwon = sc.nextInt();
}while(inwon<1 || inwon>10);
//객체 생성(메모리 할당)
score = new int[inwon];
name = new String[inwon];
rank = new int[inwon];
for(i=0;i<inwon;i++){
rank[i] = 1;
}
//인원수 만큼 이름과 점수 입력
for(i=0;i<inwon;i++){
System.out.print("이름?");
name[i] = sc.next();
System.out.print("점수?");
score[i] = sc.nextInt();
}
//정렬
for(i=0;i<inwon-1;i++){
for(j=i+1;j<inwon;j++){
if(score[i]<score[j]){
temp1 = score[i];
score[i] = score[j];
score[j] = temp1;
temp2 = name[i];
name[i] = name[j];
name[j] = temp2;
}
}
}
for(i=0;i<inwon-1;i++){
for(j=i+1;j<inwon;j++){
if(score[i]>score[j]){
rank[j] += 1;
}
}
}
//출력
for(i=0;i<inwon;i++){
System.out.printf("%6s %4d %4d등\n",name[i],score[i],rank[i]);
}
sc.close();
}
}
==Console==
<입력된 값에서 가장 큰수와 작은 수 >
//소스
package com.day5;
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i,max=0,min=0;
int num[] = new int[5];
System.out.println("5개의 정수를 입력하시오. ");
for(i=0;i<num.length;i++){
num[i] = sc.nextInt();
}
max = num[0];
min = num[0];
for(i=0;i<num.length;i++){
if(max<num[i]){
max = num[i];
}
if(min>num[i]){
min = num[i];
}
}
System.out.printf("가장 큰수 : %d, 가장 작은 수 : %d",max,min);
sc.close();
}
}
package com.day3;
import java.util.Scanner;
class Test1 {
public static void main(String[] args) {
//반복문(for,while,do~while)
//for : 시작값과 끝값이 정해져 있을 때 사용
//while : 끝값이 정해져 있지 않거나 끝값을 모를 때 사용
//do~while : 일단 실행해 봐야 할 때 사용(사용 후 재실행을 고민해 봐야할 때 사용)
Scanner sc = new Scanner(System.in);
int dan;
System.out.print("단을 입력하시오. "); //7
dan = sc.nextInt();
//for(시작값;최대값;증가값)
for (int i=1;i<=9;i++) {
System.out.println(dan + " * " + i + " = " + (dan*i));
}
System.out.println("--------------------------------------");
//while(조건)
int j=0; //while문은 초기값을 0으로 시작함.
while(j<9) {
// 조건 작성 시 = 을 잘 안씀
j++;
System.out.println(dan + " * " + j + " = " + (dan*j));
}
System.out.println("---------------------------------------");
//do{~}while(조건문);
int k=0;
do {
k++;
System.out.println(dan + " * " + k + " = " + (dan*k));
}
while (k<9);
// 1번 실행 후 조건 만족 결과 확인
System.out.println("---------------------------------------");
/* //무한루프
while (true) {
System.out.println("나 돌아간다~~");
}
*/
sc.close();
// stream 안의 데이터를 제거하기 위해 사용(close로 닫아주거나 null로 초기화 시켜줘야 함.)
}
}
////ye 시 System.in.read에서 y만 읽어 냄 e가 남은 상태에서 위의 수입력으로 이동 //System.out.print("수 입력? "); //e 가 입력되어 있는 상태에서 숫자 입력 상태가 됨 //su = Integer.parseInt(br.readLine()); -> e 앞부분만 입력되기 때문에 읽혀진 것은 null