SMALL
package test;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class Counter extends JFrame {
// 생성자
Counter() {
// 초기 설정
setTitle("카운터");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setBackground(Color.BLACK);
MyLabel mb = new MyLabel(0); // 초기값 설정
contentPane.add(mb);
setSize(1000, 800);
setVisible(true);
mb.setFocusable(true);
mb.requestFocus();
}
// MyLabel 클래스
class MyLabel extends JLabel implements Runnable {
int value; // 카운터 값
Thread th; // 스레드
volatile boolean isRunning = false; // 스레드 실행 상태 플래그
// 생성자
public MyLabel(int value) {
this.value = value;
setText(Integer.toString(value));
setFont(new Font("TimesRoman", Font.ITALIC, 300));
setHorizontalAlignment(JLabel.CENTER);
setForeground(Color.WHITE);
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (isRunning) {
// 스레드 중단
isRunning = false;
if (th != null) {
th.interrupt();
}
} else {
// 스레드 시작
isRunning = true;
th = new Thread(MyLabel.this);
th.start();
}
}
});
}
@Override
public void run() {
while (isRunning) {
try {
Thread.sleep(100); // 0.1초마다 증가
} catch (InterruptedException e) {
// 스레드 종료 시 예외 처리
return;
}
value++;
SwingUtilities.invokeLater(() -> {
setText(Integer.toString(value));
});
}
}
}
public static void main(String[] args) {
new Counter();
}
}
화면을터치하면 0.1초마다 숫자가 증가하고 다시 터치하면 멈춘다
package datainput;
public class DataInput1 {
public static void main(String[] args) {
//미션!
/*
1. 첫번째 정수를 입력한다.
2. 두번째 정수를 입력한다.
3. 출력
. 더하기값을 출력한다
. 빼기 값을 출력한다
. 곱하기 값을 출력한다
. 나누기 값을 출력한다.
- 형변환
. 문자/문자열과 숫자가 결합하면 문자타입이 된다 >> String str = "오늘"+100
. 정수에서 byte 변수 + 연산자 + byte 변수 = int에 저장한다
short 변수 short 변수
int 변수 int 변수
. 작은것 + 큰것 = 큰것에 저장한다
. float : 10.3f f를 붙인다
. 나누기 : int/int = int, int/float = float, int/(float)int = float
*/
}
}
package datainput;
public class DataInput2 {
/*
0. 구매하실 제품의 사양을 입력해주세요
1. 제품명을 입력받는다
2. 제품색상을 입력받는다
3. 제품의 가격을 입력받는다
4. 제품의 무게를 입력받는다
5. 주문하신 제품의 사양은 000000000 입니다.
*/
}
package datatype;
import java.util.Scanner;
public class type01 {
public static void main(String[] args) {
int num1;
Scanner sc = new Scanner(System.in);
System.out.println("숫자입력>> ");
num1 = sc.nextInt();
sc.close();
//10진수
System.out.println(num1);
//2진수 접두사 0bxxxx // 32 16 8 4 2 1
int num2 = 0b1111; // 0 0 1 1 1 1 = 15
System.out.println(num2);
//8진수 접두사 0 // 4 2 1 4 2 1
int num3 = 010; // 0 0 1 0 0 0 = 8
System.out.println(num3);
//16진수 접두사 0x // 8 4 2 1 8 4 2 1
// ~9 A B C D E F
int num4 = 0x10; // 0 0 0 1 0 0 0 0 = 16
}
}
package datatype;
public class Type2 {
public static void main(String[] args) {
byte num1 = Byte.MAX_VALUE;
System.out.println(num1);
String binaryString = String.format("%s",
Integer.toBinaryString(num1 & 0xFF)).replace(' ','0');
System.out.println("바이트의 비트표현: " + binaryString); // 01111111
byte num2 = Byte.MIN_VALUE;
System.out.println(num2);
binaryString = String.format("%s",
Integer.toBinaryString(num2 & 0xFF)).replace(' ','0');
System.out.println("바이트의 비트표현: " + binaryString);
}
}
127
바이트의 비트표현: 1111111
-128
바이트의 비트표현: 10000000
128 64 32 16 8 4 2 1
0 1 1 1 1 1 1 1 (127)
1 0 0 0 0 0 0 0 (-128)
✅ 자바(Java)에서 2진수, 8진수, 16진수 설명
자바에서는 다양한 **진법(기수법)**을 지원하여 숫자를 표현할 수 있습니다. 각 진법은 특정 **접두사(prefix)**를 사용하여 구분됩니다.
📚 1. 2진수(Binary)
- 표기법: 0b 또는 0B
- 사용 가능한 숫자: 0, 1
- 기본 특징: 2진수는 컴퓨터가 데이터를 저장하고 처리하는 기본 단위입니다.
🛠️ 예제
java
코드 복사
int binary = 0b1010; // 2진수 1010 → 10진수 10 System.out.println(binary); // 출력: 10
🧠 설명
- 0b는 **"이 숫자는 2진수"**임을 나타냅니다.
- 1010은 2진수로, 10진수로 변환하면 10입니다.
📚 2. 8진수(Octal)
- 표기법: 0 (숫자 0 접두사)
- 사용 가능한 숫자: 0 ~ 7
- 기본 특징: 예전 시스템에서 파일 권한을 표현할 때 주로 사용되었습니다.
🛠️ 예제
java
코드 복사
int octal = 010; // 8진수 10 → 10진수 8 System.out.println(octal); // 출력: 8
🧠 설명
- 0은 **"이 숫자는 8진수"**임을 나타냅니다.
- 010은 8진수로, 10진수로 변환하면 8입니다.
📚 3. 16진수(Hexadecimal)
- 표기법: 0x 또는 0X
- 사용 가능한 숫자: 0 ~ 9, A ~ F
- 기본 특징: 16진수는 메모리 주소나 색상 코드 등을 표현할 때 주로 사용됩니다.
🛠️ 예제
🧠 설명
- 0x는 **"이 숫자는 16진수"**임을 나타냅니다.
- 1A는 16진수로, 10진수로 변환하면 26입니다.
📊 진법 정리표
진법접두사사용 가능한 숫자예시10진수 값
2진수 | 0b | 0, 1 | 0b1010 | 10 |
8진수 | 0 | 0 ~ 7 | 010 | 8 |
16진수 | 0x | 0 ~ 9, A ~ F | 0x1A | 26 |
📝 실전 예제
public class NumberSystems {
public static void main(String[] args) {
int binary = 0b1010; // 2진수
int octal = 010; // 8진수
int hex = 0x1A; // 16진수
int decimal = 26; // 10진수
System.out.println("2진수 (0b1010): " + binary); // 출력: 10
System.out.println("8진수 (010): " + octal); // 출력: 8
System.out.println("16진수 (0x1A): " + hex); // 출력: 26
System.out.println("10진수 (26): " + decimal); // 출력: 26
}
}
🔑 실행 결과
2진수 (0b1010): 10
8진수 (010): 8
16진수 (0x1A): 26
10진수 (26): 26
🔍 주요 포인트 정리
- 2진수: 0b로 시작, 0과 1 사용.
- 8진수: 0으로 시작, 0~7 사용.
- 16진수: 0x로 시작, 0
9, AF 사용. - 출력 시: System.out.println()은 항상 숫자를 10진수로 출력합니다.
package datatype;
import java.util.Scanner;
public class type01 {
public static void main(String[] args) {
int num1;
Scanner sc = new Scanner(System.in);
System.out.println("숫자입력>> ");
num1 = sc.nextInt();
sc.close();
//10진수
System.out.println(num1);
//2진수 접두사 0bxxxx // 32 16 8 4 2 1
int num2 = 0b1111; // 0 0 1 1 1 1 = 15
System.out.println(num2);
//8진수 접두사 0 // 4 2 1 4 2 1
int num3 = 010; // 0 0 1 0 0 0 = 8
System.out.println(num3);
//16진수 접두사 0x // 8 4 2 1 8 4 2 1
// ~9 A B C D E F
int num4 = 0x10; // 0 0 0 1 0 0 0 0 = 16
System.out.println(num4);
}
}
출력
숫자입력>>
13
13
15
8
16
package datatype;
public class Type2 {
public static void main(String[] args) {
byte num1 = Byte.MAX_VALUE;
System.out.println(num1);
String binaryString = String.format("%s",
Integer.toBinaryString(num1 & 0xFF)).replace(' ','0');
System.out.println("바이트의 비트표현: " + binaryString); // 01111111
//128 64 32 16 8 4 2 1
// 0 1 1 1 1 1 1 1 (127)
// 1 0 0 0 0 0 0 0 (-128)
byte num2 = Byte.MIN_VALUE;
System.out.println(num2);
binaryString = String.format("%s",
Integer.toBinaryString(num2 & 0xFF)).replace(' ','0');
System.out.println("바이트의 비트표현: " + binaryString);
}
}
출력
127
바이트의 비트표현: 1111111
-128
바이트의 비트표현: 10000000
package datatype;
public class Type3 {
public static void main(String[] args) {
char c1 = '\"';
System.out.println(c1);
System.out.println("우리나라 \\좋은\\ 나라"); //이스케이프 문자 \t, \n(줄바꿈), \n(줄바꿈), \', \",,,
System.out.println("우리나라\n좋은나라");
System.out.println();
System.out.print("우리나라\n");
System.out.println("좋은나라\n");
char c2='한';
char c3='국';
char c4='K';
char c5='\u004f'; //유니코드
char c6='R';
char c7='\u0045';
char c8='A';
System.out.print("출력결과\n"+c2+c3+c4+c5+c6+c7+c8);
}
}
출력
"
우리나라 \좋은\ 나라
우리나라
좋은나라
우리나라
좋은나라
출력결과
한국KOREA
package datatype;
public class type5 {
public static void main(String[] args) {
byte b = 127;
int i = 100;
System.out.println("b+i="+(b+i));
System.out.println("10/4="+(10/4)); // 값이 기대값과 다름
System.out.println("10/4.0="+(10/(float)4));
System.out.println("(byte)(b+i)="+((byte)(b+i)));
}
}
출력
b+i=227
10/4=2
10/4.0=2.5
(byte)(b+i)=-29
IF문
package if문;
import java.util.Scanner;
public class if_season {
public static void main(String[] args) {
//월입력 받아서 봄,여름,가을,겨울 판별출력
Scanner sc = new Scanner(System.in);
System.out.println("월을 입력해 주세요");
int month = sc.nextInt();
if(month>=3 && month<=6) {
System.out.println("봄 입니다");
}else if(month>=7 && month<=9) {
System.out.println("여름 입니다");
}else if(month>=10 && month<=11) {
System.out.println("가을 입니다");
}else {
System.out.println("겨울 입니다");
}
/*
1. 정수를 입력받는다
2. 짝수인지 홀수인지 판별해서 출력한다
if(2로 나누어서 0이냐) {
짝수입니다
else{
홀수입니다
}
*/
System.out.println("정수를 입력해 주세요");
int intnum = sc.nextInt();
if(intnum % 2 == 0) {
System.out.println("짝수 입니다");
}else
System.out.println("홀수 입니다");
}
}
삼항 연산자로 짝수 홀수 판별하기
import java.util.Scanner;
public class EvenOddTernary {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 사용자로부터 숫자 입력받기
System.out.print("숫자를 입력하세요: ");
int number = scanner.nextInt();
// 삼항 연산자로 짝수/홀수 판별
String result = (number % 2 == 0) ? "짝수" : "홀수";
// 결과 출력
System.out.println("입력한 숫자 " + number + "는(은) " + result + "입니다.");
scanner.close();
}
}
성적 문제
package if문;
import java.util.Scanner;
/*
1. 성적을 입력받는다
2. 90보다 크다면 A
80보다 크다면 B
70보다 크다면 C
60보다 크다면 D
그외는 F
*/
public class if3_성적 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("성적을 입력하세요.");
int grade = sc.nextInt();
if(grade >=90 ) {
System.out.println("A");
}else if(grade >=80 && grade<90)
{
System.out.println("B");
}else if(grade >=70 && grade<80)
{
System.out.println("C");
}else if(grade >=60 && grade<70)
{
System.out.println("D");
}
else
System.out.println("F");
}
}
🚀 Switch문을 사용한 성적 평가 프로그램 완성
📚 1. 요구사항
- 사용자로부터 점수를 입력받습니다.
- 점수를 90
100, 8089, 70~79 등의 범위로 나누어 평가합니다. - 평가 결과를 출력합니다.
- 잘못된 점수가 입력되면 **"유효하지 않은 점수입니다."**를 출력합니다.
✅ 2. 완성된 코드
package switch문;
import java.util.Scanner;
public class sw2성적 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요: ");
double score = sc.nextDouble();
// 점수를 10으로 나누어 정수로 변환
int num = (int) score / 10;
switch (num) {
case 10: // 100점 처리
case 9:
System.out.println("등급: A");
break;
case 8:
System.out.println("등급: B");
break;
case 7:
System.out.println("등급: C");
break;
case 6:
System.out.println("등급: D");
break;
default:
if (score >= 0 && score < 60) {
System.out.println("등급: F");
} else {
System.out.println("유효하지 않은 점수입니다.");
}
break;
}
sc.close();
}
}
✅ 3. 코드 설명
- 점수 입력:
- 사용자로부터 점수를 입력받습니다.
- 점수 변환:
- score를 int로 형변환하고 10으로 나누어 십의 자리 숫자로 나눕니다.
- Switch문으로 등급 판별:
- 10, 9: A 등급
- 8: B 등급
- 7: C 등급
- 6: D 등급
- 그 외:
- 60 미만: F 등급
- 잘못된 점수: 유효하지 않은 점수입니다.
- 리소스 해제:
- sc.close()로 Scanner를 종료합니다.
✅ 4. 실행 예시
입력:
점수를 입력하세요: 85
출력:
등급: B
입력:
점수를 입력하세요: 72
출력:
등급: C
입력:
점수를 입력하세요: 50
출력:
등급: F
입력:
점수를 입력하세요: 105
출력:
유효하지 않은 점수입니다.
✅ 5. 학습 포인트
- Switch문 활용:
- switch-case로 범위를 처리하는 방법을 학습합니다.
- 형 변환:
- double → int로 형변환을 통해 switch문에서 활용합니다.
- 예외 처리:
- 잘못된 점수 입력에 대한 검증을 추가합니다.
✅ 6. 개선 아이디어
- 등급에 대한 추가적인 메시지 (예: "우수한 성적입니다!")
- 반복문(while)을 사용하여 여러 번 점수를 입력받을 수 있도록 개선
더 궁금한 부분이나 추가 기능을 구현하고 싶다면 말씀해주세요! 😊🚀
LIST
'휴먼 IT 교육 수업 메모' 카테고리의 다른 글
[휴먼IT] 휴먼IT 자바 수업 6일차 메모 (상속) 250109 (1) | 2025.01.09 |
---|---|
[휴먼IT] 휴먼IT JAVA 5일차 수업 메모 (상속) -250108 (0) | 2025.01.08 |
[휴먼IT] 휴먼IT 자바 수업 4일차 메모 (예외처리,클래스와 객체) - 250107 (1) | 2025.01.07 |
[휴먼IT] 자바 수업 3일차 메모 (반복문,배열) (0) | 2025.01.06 |
[휴먼IT] 자바 수업 1일차 메모 (250102) (0) | 2025.01.02 |