Q4) 사용자의 이메일 주소를 입력받아서 @앞의 문자의 길이가 6보다 작거나 10보다 클때 입력한 이메일이 형식이 옳바르지 않다고 출력하기 제대로 보이면 @앞의 문자만 출력하기
package java0810;
import java.util.Scanner;
public class TestQ1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String email;
System.out.println("이메일을 입력해주세요 : ");
Scanner scan = new Scanner(System.in);
email=scan.next();
String len = email.substring(0, email.indexOf('@')); // @앞에서 6~10자리까지만 인정
if (len.length() < 6 || len.length()>10) {
System.out.println("이메일 형식이 옳바르지 않습니다");
}else {
System.out.println(len+"- 이메일 확인");
}
}
}
Q5)임의의 문자를 입력받아서 그중 a의갯수를 계산하시오.
package java0810;
import java.util.Scanner;
public class TestQ5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str;
int count =0;
System.out.print("임의의 문자 10개 이내를 입력하세요");
Scanner scan = new Scanner(System.in);
str=scan.next();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i)=='a') {
count++;
}
}
System.out.println("a의 갯수 : "+count);
}
}
Q6)주민 번호를 입력 받아서(-포함) '당신은 ****년 **월 **일에 태어난 남자/여자입니다'를 출력하시오.
package java0810;
import java.security.Identity;
import java.util.Scanner;
public class TestQ6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("주민번호를 -포함해서 모두 입력하세요=> 예)950123-203345");
System.out.print(">>");
Scanner scan= new Scanner(System.in);
String ju = scan.next(); // - 포함 이므로 nextInt() 불가
if (ju.trim().length() < 14 || ju.trim().charAt(6)!= '-') {
System.out.println("-포함한 옳바른 주민 번호를 입력하세요");
}else {
String year = "";
String result= "";
year = ju.substring(0, 2); // 주민번호에서 앞 두자리가 년도
if (Integer.parseInt(year) <= 14) {
result = "당신은 20"; // 20** 년도 출생
}else {
result = "당신은 19"; // 19** 년도 출생
}
result += year + "년" + ju.substring(2, 4) + "월" + ju.substring(4, 6)+ "일에 태어난 ";
if (ju.charAt(7)%2 != 0) {
result += "남자 입니다.";
}else {
result += "여자 입니다.";
}
System.out.println(result);
}
}
}
Q7) 회문수는 앞에서나 뒤에서 읽었을때 똑같은 수를 말하는데 12121식의 숫자를 말한다. 키보드로 세자리이상을 입력받은 뒤 회문수인지 판단하시오.
package java0810;
import java.util.Scanner;
public class TestQ7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = ""; //원본 문장을 입력받을 객체
String str2 = "";//원본을 뒤집어서 저장할 객체
System.out.println("3자리 이상 숫자를 입력하세요 : ");
Scanner scan = new Scanner(System.in);
str1 = scan.next();
//키보드에서 받은 원본 문장을 뒤집어서 str2에 저장하는 코드
for(int i = str1.length(); i > 0; i--){
str2 += str1.charAt(i-1); // 핵심
}
if(str1.equals(str2)){
System.out.println(str1 + "은(는) 회문수 입니다.");
}
else{
System.out.println(str1 + "은(는) 회문수가 아닙니다.");
}
}
}
Q8) 학생들의 수학과 영어 성적을 등록하는 프로그램이 있다. 프로그램을 실행하면 몇명의 정보를 저장 할 것인지를 입력받은 후, 입력받은 수 만큼 학생들의 이름과 수학, 영어성적을 입력 받아서 보이는 프로그램 작성
코드 1
package java0810;
import java.util.Scanner;
public class TestQ8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("등록할 학생 수 : ");
Scanner scan =new Scanner(System.in);
int n =scan.nextInt();
String str [][] =new String[n][3]; // n명의 이름, 영어, 수학 3개를 위한 배열
for (int i = 0; i < str.length; i++) {
System.out.print("이름: ");
str[i][0] = scan.next();
System.out.print("영어: ");
str[i][1] = scan.next();
System.out.print("수학: ");
str[i][2] = scan.next();
System.out.println("-----------");
}
System.out.println(str.length+" 명 등록했습니다.");
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
System.out.print(str[i][j]+ " ");
}
}
}
}
코드 2
package java0810;
import java.util.Scanner;
public class TestQ8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("등록할 학생 수 : ");
Scanner scan =new Scanner(System.in);
int n =scan.nextInt();
String[] info = {"이름 :", "영어 :","수학 :"};
String str[][] =new String[n][info.length];
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
System.out.print(info[j]);
str[i][j]=scan.next();
}
System.out.println("---------");
}
System.out.println(str.length+" 명 등록했습니다.");
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
System.out.print(str[i][j]+ " ");
}
}
}
}
Q9) 마방진
package java0810;
import java.util.Scanner;
public class TestQ9 {
public static void main(String[] args) {
int arr[][];
int num=1;
int size=0;
int x,y =0;
System.out.println("홀 수만 입력 : ");
Scanner scan = new Scanner(System.in);
size = scan.nextInt();
x= size/2; // 무조건 x축 중앙에 1을 둠, 여기부터 시작됨
arr= new int[size][size]; // 가로 세로가 똑같은 테이블
while (num<= size*size) {
arr[y][x]=num; // 0행 1열(y,x)에 1을 넣음
if (num % size==0) {
y++;
}else {
y--;
x++;
}
if (y < 0)
y = size -1;
if (x>=size)
x=0;
num++;
}
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
System.out.printf("%02d ", arr[i][j]);
}
System.out.println();
}
}
}
Q10) 워드 스크램블
package java0810;
import java.util.Random;
import java.util.Scanner;
class WordScramble{ // 정답을 반환 메써드
String[] strArr= {"CHANGE", "LOVE", "HOPE", "VIEW", "APPLE"};
String shake="";
public String getAnswer() {
int idx =new Random().nextInt(strArr.length);
return strArr[idx];
}
public String getScrambledWord(String str) { // 문제를 섞는 메써드
int[] inArr = new int[str.length()];
for (int i = 0; i < inArr.length; i++) {
inArr[i]=new Random().nextInt(str.length());
boolean check=false;
for (int j = 0; j < i; j++) {
if (inArr[i]==inArr[j]) {
check=true;
break;
}
}
if (!check) {
i++;
}
}
for (int i = 0; i < str.length(); i++) {
shake += str.charAt(inArr[i]);
}
return shake;
}
}
public class TestQ10 {
public static void main(String[] args) {
WordScramble ws = new WordScramble();
String answer = ws.getAnswer();
String question = ws.getScrambledWord(answer);
while (true) {
System.out.print("단어를 입력하세요 : ");
Scanner scan= new Scanner(System.in);
String str =scan.next();
if (str.equalsIgnoreCase(answer)) {
System.out.println(str+"정답!!!!");
break;
}else {
System.out.println(str+"오답....");
}
}
}
}
Q11) 스테틱 변수 point 를가지는 Guide 클래스를 만들고, 이름과 성별 정보를 갖는 Guest클래스를 만들어 아래의 결과가 나오도록 하는 로직을 구형해보자. 최초 실행시 등록할 관광객 수를 지정. 지정한 수 만큼 Guest클래스의 배열을 만들도록 한다.
관광객수 :2 관광객 등록 1.이름: 홍길동 1.성별: 남 --------------- 2.이름: 홍길순 2.성별: 여 ----------------- 이름등록이 완료 되었다면 아래의 메뉴가 출력된다. 1.관광객 정보 2.목적지 변경 3. 종료 선택>>1
package java0810;
import java.util.Scanner;
class Guide{
static String point;
Guest[] guest; // Guest 클래스가 생성될 때까지 오류 보임
public Guide(int n) {
point = "가거도"; // 초기화
guest = new Guest[n];
for (int i = 0; i < guest.length; i++) {
guest[i]=new Guest();
}
}
}
class Guest{
private String name, gender; // Getter와 Setter를 이용해서 메써드 생성
public String getPoint() {
return Guide.point;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
public class TestQ11 {
public static void main(String[] args) {
System.out.print("관광객의 수 : ");
Scanner scan=new Scanner(System.in);
int n = scan.nextInt();
Guide guide=new Guide(n);
System.out.println("관광객 등록");
for (int i = 0; i < n; i++) {
System.out.print(i+ 1 +". 이름 : ");
guide.guest[i].setName(scan.next());
System.out.print(i+ 1 +". 성별 : ");
guide.guest[i].setGender(scan.next());
System.out.println("-------------");
}
outer: while (true) {
System.out.println("1. 관광객 정보");
System.out.println("2. 목적지 변경");
System.out.println("3. 종료");
System.out.print("선택>>");
int select = scan.nextInt();
switch (select) {
case 1:
for (int i = 0; i < n; i++) {
System.out.println(i+1+". 이름 : "+guide.guest[i].getName());
System.out.println(i+1+". 성별 : "+guide.guest[i].getGender());
System.out.println(i+1+". 목적지 : "+guide.guest[i].getPoint());
System.out.println("-------------");
}
break;
case 2:
System.out.print("어디로 변경할까요???");
Guide.point = scan.next();
System.out.println(Guide.point+ "로 목적지 변경");
System.out.println("-------------");
break;
default:
System.out.println("종료");
break outer;
}
}
}
}
Q12) 배열 arr안에 10, 20, 30, 40, 50을 넣어서 초기화 한뒤, 이 모든 값을 더하는 프로그램을 작성하시오.
package java0810;
public class TestQ12 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {10, 20, 30, 40, 50};
int result = 0;
for (int i = 0; i < arr.length; i++) {
result += arr[i];
}
System.out.println("모두 합한 결과 : " + result);
}
}
Q13)WordGame이라는 쓰레드가 ArrayList에 3초마다 미리 준비되어 있는 단어를 하나씩 추가하고, 사용자가 단어를 입력하면 ArrayList에서 일치하는 단어를 삭제하도록 하는 프로그램을 만들어 보자.
package java0810;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
class WordGame extends Thread{
private ArrayList<String> arr;
private String[] data;
private boolean isPlaying =true;
public WordGame(ArrayList<String> arr, String[] data) { // 생성자
this.arr =arr;
this.data = data;
}
public void setPlaying(boolean isPlaying) { // 메써드 생성
this.isPlaying = isPlaying;
}
@Override
public void run() {
while (isPlaying) {
int rand = new Random().nextInt(data.length);
arr.add(data[rand]); // 데이터를 추가
try {
Thread.sleep(3000);
} catch (Exception e) {
}
}
}
}
public class TestQ13 {
public static void main(String[] args) {
ArrayList<String> arr = new ArrayList<String>(); // 생성자를 통해서 객체 생성
String[] data= {"apple", "banana", "orange", "grape", "strawberry", "pineapple"};
WordGame wg = new WordGame(arr, data);
wg.start(); // 쓰레드 시작
try {
Thread.sleep(100);
} catch (Exception e) {
}
while (true) {
if (arr.size()==0) {
System.out.println("클리어");
wg.setPlaying(false); // 쓰레드 종료
break;
}
System.out.println(arr);
System.out.print(">> ");
Scanner scan = new Scanner(System.in);
String in= scan.next();
for (int i = 0; i < arr.size(); i++) {
if (in.equals(arr.get(i))) {
arr.remove(i);
}
}
}
}
}
댓글