Object[][] records = new Object[][] {
{"AAA", 1.23, 123456},
{"BBBBB", 12.3, 123},
{"CCCC", 123.4, 1234}
};
위 2차원 배열을 아래 샘플과 같이 열을 맞추어 출력하세요.
- 문자열을 왼쪽 맞춤, 숫자는 오른쪽 맞춤
- 단위기능을 적절히 메서드로 분리
| AAA | 1.23 | 1234567 | | BBBBB | 12.3 | 1234 | | CCCC | 123.4 | 12345 | |
진행 순서
1. 먼저 2차원 배열을 출력
public class Test_0608 {
public static void main(String[] args) {
Object[][] records = new Object[][]{
{"AAA", 1.23, 123456},
{"BBBBB", 12.3, 123},
{"CCCC", 123.4, 1234},
};
for (int i = 0; i < records.length; i++) {
Object[] inArr = records[i];
for (int j = 0; j < inArr.length; j++) {
System.out.print(inArr[j] + " | ");
}
System.out.println();
}
}
}
2. matches를 사용해 정규식으로 구분
문자열 체크 : ^[a-zA-Z]*$
소수점 숫자 체크 : [.0-9]+(.[0-9])
import java.util.regex.Pattern;
public class Test_0608 {
public static void main(String[] args) {
Object[][] records = new Object[][]{
{"AAAA", 1.23, 123456},
{"BBBB", 12.3, 123},
{"CCCC", 123.4, 1234},
};
String pattern = "^[a-zA-Z]*$";
String pattern2 = "[.0-9]+(.[0-9])";
for (int i = 0; i < records.length; i++) {
Object[] inArr = records[i];
for (int j = 0; j < inArr.length; j++) {
if(Pattern.matches(pattern, inArr[j].toString())){
System.out.print(inArr[j]+" "+ "|");
}
if(Pattern.matches(pattern2, inArr[j].toString())){
System.out.print(" "+inArr[j] + "|");
}
}
System.out.println();
}
}
}
import java.util.regex.Pattern;
public class Test_0608 {
public static void main(String[] args) {
Object[][] records = new Object[][]{
{"AAAA", 1.23, 123456},
{"BBBB", 12.3, 123},
{"CCCC", 123.4, 1234},
};
String pattern = "^[a-zA-Z]*$";
// String pattern2 = "[.0-9]+(.[0-9])";
for (int i = 0; i < records.length; i++) {
Object[] inArr = records[i];
for (int j = 0; j < inArr.length; j++) {
if (Pattern.matches(pattern, inArr[j].toString() )) {
//toString - 메서드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드 입니다.
System.out.print(inArr[j] + " " + "|");
}
else if(!Pattern.matches(pattern, inArr[j].toString() )){
System.out.print(" " +inArr[j] + "|");
}
}
System.out.println();
}
}
}
3. method화 및 Java 문자열 포맷 사용
package Test_0608;
public class Test_0608 {
public static void main(String[] args) {
Object[][] records = new Object[][]{
{"AAA", 1.23, 123456},
{"BBBBB", 12.3, 123},
{"CCCC", 123.4, 1234},
};
//todo 1. 문자열의 길이 찾기
//todo 2. 실수를 문자열로 바꾸기
//todo 3. Integer 문자열로 바꾸기
//todo 4. 구한 길이의 최대 값을 또다른 배열로 생성 int maxlengh[5,5,6]; 이런씩
//todo 5. 출력 - 열맞춤 왼쪽/오른쪽 - Java에도 C언어와 마찬가지로 format이 있다. format을 찾아보고 적용 -사장님이 알려주심-
//todo 6. 끝나면 길이 구할때 사용한 for문은 따로 메소드 처리하기
LengthCheck(records);
System.out.println("******************************************************");
returnSum(records);
}
public static void LengthCheck(Object[][] records){
for (int i = 0; i < records.length; i++) {
Object[] inArr = records[i];
for (int j = 0; j < inArr.length; j++) {
if (inArr[j] instanceof String) {
int length = ((String) inArr[j]).length();
System.out.print("길이 > " +length+" | ");
// System.out.print(inArr[j] + "|");
}
else if((inArr[j] instanceof Double)){
String test2 = String.valueOf(inArr[j].toString().length());
System.out.print("길이 > " +test2+" | ");
// System.out.print(inArr[j]+ "|");
}
else if((inArr[j] instanceof Integer)){
String test3 = String.valueOf(inArr[j].toString().length());
System.out.print("길이 > " +test3+" | ");
// System.out.print(inArr[j] + "|");
}
}
System.out.println();
}
}
public static void returnSum(Object[][] records) {
for(int i=0; i<records.length; i++){
Object[] inArr = records[i];
for (int j = 0; j < inArr.length; j++) {
if (inArr[j] instanceof String) {
System.out.format(String.format("%-6s",inArr[j] +" ")+"|");
}
else if((inArr[j] instanceof Double)){
System.out.format(String.format("%6s",inArr[j])+"|");
}
else if((inArr[j] instanceof Integer)){
System.out.format(String.format("%7s",inArr[j] )+"|");
}
}
System.out.println();
}
}
}
4. 배열의 최대길이에 맞게 정렬하기
package Test_0608;
public class Object_test {
public static void main(String[] args) {
Object[][] records = new Object[][]{
{"AAA", 1.23, 123456},
{"BBBBB", 12.3, 123},
{"CCCC", 123.4, 1234},
};
int num1 = 0;
int num2 = 0;
int num3 = 0;
int numArr[] = new int[3];
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
System.out.print(records[i][j] +" | ");
if(num1 <records[i][0].toString().length()){
num1 = records[i][0].toString().length();
}
if(num2 <records[i][1].toString().length()){
num2 = records[i][1].toString().length();
}
if(num3 <records[i][2].toString().length()){
num3 = records[i][2].toString().length();
}
if(numArr[j] <records[i][j].toString().length()){
numArr[j] = records[i][j].toString().length();
}
}
System.out.println();
}
System.out.println("-----------------------------------");
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
String empty=" ";
int maxArr = numArr[j]-records[i][j].toString().length();
//공백의 길이
for(int k=0; k<maxArr; k++){
empty += " ";
}
if(records[i][j] instanceof String){
System.out.print(records[i][j] + empty + " | ");
}
else{
System.out.print( empty +records[i][j] + " | ");
}
}
System.out.println();
}
System.out.println("==================================");
System.out.println(num1 + ":" +num2 +":"+num3);
System.out.println("==================================");
System.out.println(numArr[0] +":"+numArr[1]+":"+numArr[2]);
}
}
5. 배열의 최대길이에 맞게 정렬및 가변적 정렬
package Test_0608;
public class Object_test {
public static void main(String[] args) {
Object[][] records = {
{"AAA", 1.23, 123456},
{"BBBBB", 12.3, 123},
{"CCCC", 123.4, 1234},
{"CCCC", 123.4, 1234},
{"CCCC", 123.4, 5555555},
{"CCCC", 123.4, 1234},
};
int[] numArr = new int[3];
for (int i = 0; i< records.length ; i++) {
// 가변적 길이 만큼이 아니라 각자 자기 행 길이 만큼 for문을 돌기
for (int j = 0; j < records[0].length ; j++) {
//todo 3. 배열에서 가장 큰 수를 출력하는 파트
if (numArr[j] <= records[i][j].toString().length()) {
numArr[j] = records[i][j].toString().length();
}
}
}
System.out.println("-----------------------------------");
for (int i = 0; i < records.length; i++) {
for (int j = 0; j < records[0].length ; j++) {
String empty = " ";
//todo 4. 공백의 길이를 넣어주는 파트
int maxArr = numArr[j] - records[i][j].toString().length();
//공백의 길이
for (int k = 0; k < maxArr; k++) {
empty += " ";
}
// todo 5.타입에 따라 문자열인 경우 왼쪽 정렬 | 아닌 경우 오른쪽 정렬
if (records[i][j] instanceof String) {
System.out.print(records[i][j] + empty + " | ");
} else {
System.out.print(empty + records[i][j] + " | ");
}
}
System.out.println();
}
}
}
'Java 문제' 카테고리의 다른 글
[Java문제풀기] 로그 파일을 읽어 트랜젝션ID 별 응답소요시간 구하기 (0) | 2021.06.13 |
---|---|
[Java] 로그 파일을 읽어 트랜젝션ID 별 응답소요시간 구하기 (0) | 2021.05.30 |
[Java] 각 로그의 라인은 객체로 변환 후 처리 (0) | 2021.05.30 |
[Java] 같은 숫자 제거 (0) | 2021.05.07 |
문자열을 정수로 바꾸기 (0) | 2021.05.07 |