a(* 의 개수)와 b(열)의 반복을 통해 직사각형 별을 찍는 문제
이중 for문으로 a와 b의 반복을 했음
import java.util.Scanner;
public class P01 {
public static void main(String[] args) {
// 직사각형 별찍기
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for (int i = 0; i < b; i++) {
for (int j = 0; j < a; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
Scanner 클래스를 이용한 입력은 Java의 여러가지 입력방법 중 가장 쉬우면서 대중적인 입력방법
Scanner 객체이름 = new Scanner(System.in);
( 객체이름은 대체로 in, input, sc, scan 이 가장 많이 쓰임)
System.in
: 사용자로부터 입력을 받기 위함
util 패키지를 경로의 Scanner 클래스를 호출해야 사용할 수 있음
- import java.util.Scanner;
: import를 통해 호출해주어야 함
메서드를 사용하여 기본적인 데이터 타입들을 입력할 수 있음
1) byte - nextByte( )
2) short - nextShort( )
3) int - nextInt( )
4) long - nextLong( )
5) float - nextFloat( )
6) double - nextDouble( )
7) boolean - nextBoolean( )
8) String - next( ) : 공백(띄어쓰기) 기준 읽음, nextLine( ) : 개행(줄바꿈) 기준 읽음
s의 길이가 홀수면 가운데 글자 하나를, 짝수면 가운데 두 글자를 반환하는 문제
s의 길이가 짝수일 때는 s.length()/2-1
번째 인덱스부터 그 다음 인덱스인 s.length()/2
까지 반환하고,
s의 길이가 홀수일 때는 s.length()/2
번째 인덱스만 반환하도록 했음
(int)이므로 홀수일 때 /2해서 .5가 나와도 버려지게 됨
public class P03 {
public static String main(String s) {
// 가운데 글자 가져오기
String answer = "";
int sLength = s.length();
if (sLength % 2 == 0) {
answer = s.substring((int) (sLength / 2) - 1, (int) (sLength / 2) + 1);
} else {
answer = s.substring((int) (sLength / 2), (int) (sLength / 2) + 1);
}
return answer;
}
}
substring(int x)
: 문자열을 x번째 인덱스부터 맨 끝 인덱스까지 자름
String str = "0123456789";
str.substring(3) // 3456789
substring(int x, int y)
: 문자열을 x부터 y까지 자름 (x는 포함, y는 불포함)
String str = "0123456789"
str.substring(3, 7) // 3456
String s를 int형으로 반환하는 문제
public class P05 {
public static int main(String s) {
// 문자열을 정수로 바꾸기
int answer = 0;
answer = Integer.parseInt(s);
return answer;
}
}
Integer.parseInt(String s)
: 숫자형의 문자열을 10진수의 Integer형으로 반환해줌
Integer.parseInt("123"); // 123
Integer.parseInt(String s, int radix)
: 숫자형의 문자열을 첫번째 인자값으로 받고 변환할 진수값을 입력하면 해당 진수에 맞춰 Integer형으로 반환해줌
Integer.parseInt("123", 8); // 173 (123의 8진수 값)
핸드폰 뒷번호 4개를 제외한 남은 앞번호를 모두 * 로 바꾸는 문제
public class P09 {
public static String main(String phone_number) {
// 핸드폰 번호 가리기
String answer = "";
for (int i = 0; i < phone_number.length(); i++) {
if (i < phone_number.length() - 4) {
answer += "*";
} else {
answer += phone_number.charAt(i);
}
}
return answer;
}
}
: String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환해줌
String str = new String();
char ch = '';
str = "Hello World";
ch = str.charAt(0);
System.out.println(ch); // H
s 문자열 내에 p,y 대소문자 상관없이 개수를 세어서 같으면 true 다르면 false
public class P16 {
public static boolean main(String s) {
// 문자열 내 p와 y의 개수
boolean answer = true;
int pCount = 0;
int yCount = 0;
s = s.toLowerCase();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == 'p') {
pCount++;
} else if (c == 'y') {
yCount++;
}
}
answer = (pCount == yCount) ? true : false;
return answer;
}
}
: 대상 문자열을 모두 소문자로 변환함
String str = "Hello World";
str = str.toLowerCase();
System.out.println(str); // "hello world"
: 대상 문자열을 모두 대문자로 변환함
String str = "hello world";
str = str.toUpperCase();
System.out.println(str); // "HELLO WORLD"
공백으로 문자열을 구분하여 그 단어의 홀수번째 알파벳을 대문자로 짝수번째는 소문자로 반환하는 문제
public class P21 {
public static String main(String s) {
// 이상한 문자 만들기
String answer = "";
int count = 0;
String[] strArr = s.split("");
for (String str : strArr) {
count = str.contains(" ") ? 0 : count + 1;
answer += count % 2 == 0 ? str.toLowerCase() : str.toUpperCase();
}
return answer;
}
}
: 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열(Array)에 저장하여 리턴함
String str = "010-1234-5678";
String[] strArr = str.split("-");
String strNum1 = strArr[0];
String strNum2 = strArr[1];
String strNum3 = strArr[2];
System.out.println(strNum1); // 010
System.out.println(strNum2); // 1234
System.out.println(strNum3); // 5678
: 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수 (대/소문자 구분)
String str = "Hello World";
System.out.println(str.contains("hello")); // false
System.out.println(str.contains("Hello")); // true
int n의 숫자를 모두 더하는 문제
public class P22 {
public static int main(int n) {
// 자릿수 더하기
int answer = 0;
String str = String.valueOf(n);
for (int i = 0; i < str.length(); i++) {
answer += (int) str.charAt(i) - '0';
}
return answer;
}
}
: object의 값을 String으로 변환(toString()
과 같은 역할)
< object가 null
인 경우 >
toString()
: NPE(null을 만났을 때 발생하는 runtime 예외상황)을 발생시킴
valueOf
: "null"이라는 문자열로 처리함
long n을 뒤집어서 그 숫자를 하나씩 int 배열로 반환하는 문제
public class P23 {
public static int[] main(long n) {
// 자연수 뒤집어 배열로 만들기
String str = String.valueOf(n);
StringBuilder sb = new StringBuilder(str);
sb = sb.reverse();
String[] strArr = sb.toString().split("");
int[] answer = new int[strArr.length];
for (int i = 0; i < strArr.length; i++) {
answer[i] = Integer.parseInt(strArr[i]);
}
return answer;
}
}
: String 클래스가 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못하는 단점을 보완한 클래스
StringBuilder sb = new StringBuilder();
: 객체 선언
n의 각 자릿수를 큰것부터 작은 순으로 정렬하는 문제
import java.util.Arrays;
import java.util.Collections;
public class P24 {
public static long main(long n) {
// 정수 내림차순으로 배치하기
long answer = 0;
String[] strArr = String.valueOf(n).split("");
Arrays.sort(strArr, Collections.reverseOrder());
StringBuilder sb = new StringBuilder();
for(String str : strArr) {
sb.append(str);
}
answer = Long.parseLong(sb.toString());
return answer;
}
}
: 정렬 (내림차순)
Integer[] nums = {50, 9, 20, 40};
Arrays.sort(nums, Collections.reverseOrder()); // [50, 40, 20, 9]
: 문자열 끝에 문자열을 추가함
(StringBuffer나 StringBuilder가 필요함)
StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.append("World");
System.out.println(sb); // Hello World
: String 문자열을 Long 형태로 변환
String str = "100";
long l = Long.parseLong(str);
System.out.println(l); // 100 (long)