num1의 값과 num2의 값을 곱한 결과와 사용자가 입력한 값이 같은지 비교하여 정답과 오답을 출력한다.
모든 문제가 종료된 뒤 0을 입력하면 break문을 이용해 무한 반복문을 입력을 종료한다. 0 외의 숫자를 입력하면 다시 문제 수를 입력 받는다.
코드
//곱셈 문제
Random rand = new Random(); //랜덤 값
Scanner scan = new Scanner(System.in); //입력
int first=1;//문제를 구분하는 선을 출력하기 위해 선언
while(true){
if(first!=1)//문제를 구분하기 위해 출력. 문제 풀이를 두 번 이상 반복할 때 출력
System.out.println("-------------------------------------------------------------------");
first=0;
System.out.print("문제 수를 입력하시오 >> ");
int work = scan.nextInt();
System.out.println("총 "+work+"문제가 출력됩니다.\n");
for(int i=1;i<=work;i++){
//곱셈 값 만들기
int num1 = rand.nextInt(8)+2; // 2단부터 9단까지 출력
int num2 = rand.nextInt(9)+1; // 1부터 9까지 출력
int multiplication = num1*num2; //곱셈의 정답을 저장하는 변수
System.out.printf("%d번 문제:%d*%d=",i,num1,num2); //랜덤 문제 출력
//정답 맞추기
int check = scan.nextInt(); //입력한 값이 정답이 맞는지 확인하는 변수
if(check==multiplication)
System.out.println("정답입니다.");
else
System.out.printf("오답입니다.정답은 %d입니다.\n",multiplication);
System.out.println(); //한 문제가 끝나면 줄바꿈
}
//문제 종료
int question = 1;
System.out.print("계속해서 문제를 푸시겠습니까? 종료를 원하시면 0을 입력해주세요. >> ");
question =scan.nextInt();
if(question== 0)
break; //무한 반복 종료
}
System.out.println("수고하셨습니다. 문제 풀이가 종료되었습니다.");
scan.close();
출력 결과
문제 수를 입력하시오 >> 2
총 2문제가 출력됩니다.
1번 문제:7*2=14
정답입니다.
2번 문제:4*5=22
오답입니다.정답은 20입니다.
계속해서 문제를 푸시겠습니까? 종료를 원하시면 0을 입력해주세요. >> 1
-------------------------------------------------------------------
문제 수를 입력하시오 >> 1
총 1문제가 출력됩니다.
1번 문제:2*8=16
정답입니다.
계속해서 문제를 푸시겠습니까? 종료를 원하시면 0을 입력해주세요. >> 0
수고하셨습니다. 문제 풀이가 종료되었습니다.
영어 알파벳으로 이루어진 문자열str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
입력
출력
aBcDeFg
AbCdEfG
str은 알파벳으로 이루어진 문자열입니다.
코드
String str="aBcDeFg";
String str2="";
System.out.println("변경 전:"+str);
//아스키 코드표를 기준으로 대문자의 값과 소문자의 값이 32가 차이가 나는 점을 이용한다
for(char c : str.toCharArray()){
if(c>=65&&c<=90){ //대문자를 소문자로 변경
str2+=(char)(c+32);
}
else if(c>=97&&c<=122){ //소문자를 대문자로 변경
str2+=(char)(c-32);
}
}//for_end
System.out.println("변경 후:"+str2);
한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다.
예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.
한국중학교 학생들의 번호를 나타내는 정수 배열number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.
입력
출력
[-2, 3, 0, 2, -5]
2
[-3, -2, -1, 0, 1, 2, 3]
5
[-1, 1, -1, 1]
0
▶ 제한사항
서로 다른 학생의 정수 번호가 같을 수 있습니다.
[-3, -2, -1, 0, 1, 2, 3]에서 학생들의 정수 번호 쌍 (-3, 0, 3), (-2, 0, 2), (-1, 0, 1), (-2, -1, 3), (-3, 1, 2) 이 삼총사가 될 수 있으므로, 5를 return 합니다.
Solution 코드
class Solution {
public int solution(int[] number) {
int result=0; //삼총사가 되는 값 출력
//삼총사 값 구하기
for(int i=0;i<number.length;i++){//0번째 배열을 선택하여 비교
for(int j=i+1;j<number.length;j++){//i번째 배열 바로 옆의 값부터 선택
for(int k=j+1;k<number.length;k++){//j번째 배열 바로 옆의 값부터 선택하여 반복
if((number[i] + number[j] + number[k]) == 0){
result++; //세 값을 합쳤을 때 0이 나오면 삼총사!!
}
}//for_k_end
}//for_j_end
}//for_i_end
//삼총사가 0명일 때 출력
if(result==0)
System.out.println("삼총사가 될 수 있는 방법이 없습니다.");
return result; //삼총사 값 리턴
}
}//Solution_end
main 코드
▶ 작성한 solution 함수를 이용하여 main문에서 출력해 보자.
Solution s = new Solution();
int[] number1={-2,3,0,2,-5};
int[] number2={-3,-2,-1,0,1,2,3};
int[] number3={-1,1,-1,1};
//삼총사 값 출력
int num = s.solution(number1);
System.out.println("삼총사 수:"+num);
num = s.solution(number2);
System.out.println("삼총사 수:"+num);
num = s.solution(number3);
System.out.println("삼총사 수:"+num);
package java_practice;
import java.awt.*; //window 예제를 위해 창을 만드는 Frame을 사용한다.
import java.awt.event.*; //이벤트를 처리하는 인터페이스와 클래스
public class Test01_window extends Frame implements WindowListener{
//생성자
public Test01_window() {
super("인터페이스를 이용하여 창 종료");//첫 줄에 기재하여 상위 클래스 생성자 호출
setBackground(Color.pink);//super(또는 this).setBackground();와 같은 실행을 한다.
addWindowListener(this);
setSize(700,500);//가로:700, 세로:500
setVisible(true);
}//Test01_window_end
//인터페이스의 추상 메소드 오버라이딩.
//추상 메소드를 오버라이딩하지 않으면 오류가 난다. 인터페이스의 메소드는 모두가 추상이기 때문에 반드시 모두 오버라이딩 해야 한다.
public void windowClosing(WindowEvent e) {
//dispose();//리소스 반환
System.exit(0);//프로그램 종료. X를 누르면 종료됨
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public static void main(String[] args) {
new Test01_window();
}//main_end
}//class_end
출력 결과
2) inner class를 사용하여 WindowAdapter 클래스를 상속해 창을 종료해 보자.
public class Test02_window extends Frame {
//생성자
public Test02_window(){
super("inner class를 사용하여 WindowAdapter 클래스를 상속해 창 종료");
setBackground(Color.darkGray);
addWindowListener(new MyWin());
setSize(800,800);//가로:700, 세로:500
setVisible(true);
}//Test02_window_end
//창을 종료하는 inner 클래스. 클래스는 7개를 다 오버라이딩하지 않아도 된다.
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램 종료
}
}//MyWin_end
public static void main(String[] args) {
new Test02_window();
}//main_end
}//class_end
출력 결과
3) 이름이 없는 클래스를 사용하여 창을 종료해 보자
public class Test03_anonymous extends Frame{
//생성자
public Test03_anonymous(){
super("이름 없는 클래스를 사용하여 창 종료");
setBackground(Color.orange);
setSize(400,200);
setVisible(true);
//이름 없는 클래스
addWindowListener(new WindowAdapter(){
//오버라이딩
public void windowClosing(WindowEvent w){
System.exit(0);
}
});
}//Test03_anonymous_end
public static void main(String[] args) {
new Test03_anonymous();
}//main_end
}//class_end
출력 결과
※ 같은 패키지에서 다른 클래스를 호출할 수 있다.
package java_practice; //같은 패키지
public class Test_window {
public static void main(String[] args) {
new Test03_anonymous();
}//main_end
}//clase_end
출력 결과
2. AWT를 이용한 이미지 출력
1) jpg 파일 출력
▶ jpg 파일 저장
C:\imgs\image.jpg
▶ 코드 작성
public class Test04_img extends Frame{
//변수
Image img;
//생성자
public Test04_img(){
super("이미지를 출력해 보자");
img=Toolkit.getDefaultToolkit().getImage("C:\\imgs\\image.jpg");//윈도우는 \를 2개 써야 한다.
setSize(1300,600);
setVisible(true);
addWindowListener(new MyWin());
}//Test04_img_end
//메소드 paint(Graphics g)
public void paint(Graphics g){
g.drawImage(img, 50, 20, this);//x:50, y:20, this:여기에 출력한다.
}
//창을 종료하는 inner 클래스
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램 종료
}
}//MyWin_end
public static void main(String[] args) {
new Test04_img();
}//main_end
}//class_end
▶ 출력
출력 결과
2) 이미지 크기를 줄여서 출력
//변수
Image img;
//디폴트 생성자
public Test04_img(){
super("이미지를 출력해 보자");
img=Toolkit.getDefaultToolkit().getImage("C:\\imgs\\image.jpg");//윈도우는 \를 2개 써야 한다.
setSize(800,500);
setVisible(true);
addWindowListener(new Mywin());
}//Test04_img_end
//메소드 paint(Graphics g)
public void paint(Graphics g){
//g.drawImage(img, 50, 20, this);//x:50, y:20, this:여기에 출력한다.
g.drawImage(img, 50, 50, 400, 300, this);//width:300, height:200
}//paint_end
//창을 종료하는 inner 클래스
class Mywin extends WindowAdapter{
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램 종료
}
}//Mywin_end
public static void main(String[] args) {
new Test04_img();
}//main_end
출력 결과
3. 대화창 만들기
▶ 코드 작성
public class Test05_event extends Frame implements ActionListener{
//변수
TextField tf1,tf2;
TextArea ta;
//생성자
public Test05_event(){
super("이벤트 대화창 출력");//첫 줄에 기재하여 상위 클래스 생성자 호출
tf1=new TextField();//객체 생성
tf2=new TextField();//객체 생성
ta=new TextArea();//객체 생성
//배경 색상
tf1.setBackground(Color.red);
tf2.setBackground(Color.blue);
ta.setBackground(Color.yellow);
//글자 색상
tf1.setForeground(Color.white);
tf2.setForeground(Color.white);
//폰트 설정
tf1.setFont(new Font("Dialog", Font.BOLD, 20));//폰트 설정:BOLD(굵게), 폰트 크기:20
tf2.setFont(new Font("Dialog", Font.PLAIN, 20));//폰트 설정:PLAIN, 폰트 크기:20
ta.setFont(new Font("Dialog", Font.PLAIN, 20));//폰트 설정:PLAIN, 폰트 크기:20
//Frame 컨테이너에 컴포넌트 붙이기
add(tf1,"North");//위에 위치. North의 N은 대문자로 작성
add(tf2,"South");//밑에 위치. South의 S은 대문자로 작성
add(ta,"Center");//가운데에 위치. Center의 C은 대문자로 작성
//이벤트 등록
this.addWindowListener(new MyWin());
tf1.addActionListener(this);
tf2.addActionListener(this);
addWindowListener(new MyWin());
setSize(500,500);
setVisible(true);
}//Test05_event(cons_end)
//inner class
class MyWin extends WindowAdapter{
//오버라이딩
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램
}
}//Mywin_end
//메소드 오버라이딩
public void actionPerformed(ActionEvent e){
if(e.getSource()==tf1){
String msg="홍길동>>"+tf1.getText();//지역 변수 메세지. 받아온 text를 입력
ta.append(msg+"\n");
tf1.setText("");//tf1 내용 지움
tf2.requestFocus();//tf2으로 포커스 이동
}
else if(e.getSource()==tf2){
String msg="저팔계>>"+tf2.getText();//지역 변수 메세지. 받아온 text를 입력
ta.append(msg+"\n");
tf2.setText("");//tf2 내용을 지움
tf1.requestFocus();//tf1으로 포커스 이동
}
}
public static void main(String[] args) {
new Test05_event();
}//main_end
}//class_end