알아가기/Java 19

[Java] 맥북 Tomcat 설치 후 ./startup.sh 실행 시 권한 거부 해결

permission denied: ./startup.sh 맥북에 Tomcat 을 tar.gz 파일로 다운받아 압축을 해제 후 터미널로 bin 폴더를 찾아가 ./startup.sh 로 톰캣 서버를 실행하였다. 하지만 permission denied 가 뜨고 실행되지 않았다. 이를 해결하기 위해서 파일 권한을 변경해준다. 초기에는 문제 해결에 급급해 모두에게 최고 권한을 부여했는데 다시금 숨을 돌리며 확인하고 나서 Owner 빼고는 나머지 쓰기 권한을 제거하였다. chmod a+x startup.sh stackoverflow 에서 Tomcat 리눅스 질문으로 올라온 글이 있는데 위의 명령어로 쓰면 된다고 하였으나 sudo 를 추가하여도 나는 변경점이 없었다. chmod 755 startup.sh 그래서 추가..

알아가기/Java 2023.01.26

[Java] substring() 원하는 위치의 문자열을 가져오기

String class 와 substring() String class 로 생성된 문자열은 char 로 이루어진 단일 문자들의 배열이라고 볼 수 있다. 따라서, String 문자열에서 index 를 이용하면 필요한 위치의 연결된 문자들을 return 할 수 있다. 이와 같이 index 를 이용한 문자를 가져오기 위해서는 substring() 을 사용할 수 있다. 두 가지 타입 substring() 은 두 가지 형태의 parameter 를 입력할 수 있는데, 시작위치만 표기하여 시작부터 끝까지 데이터를 반환하거나 시작위치와 끝위치를 입력하여 선택 부분에 대한 문자를 반환할 수 있다. from start point // 시작 위치만 입력. public String substring (int start_ind..

알아가기/Java 2023.01.21

[Java] 공백 없는 연속된 숫자들 분리하여 배열에 입력받기 (split, toCharArray)

자바로 코딩 테스트 문제를 풀 때, 띄어쓰기로 공백이 형성된 여러 단일 숫자들의 데이터는 간단하게 배열로 작성이 가능하나, 공백 없이 한 번에 나열된 숫자들은 각각 띄워서 배열로 저장을 하려면 번거로운 작업이 필요하다. split() String[] strArr = sc.next().split(""); 첫째, 임시 배열 strArr 에 .split("") 으로 분할하여 입력받는다. numberArr[i][j] = Integer.parseInt(strArr[j]); 둘째, 입력받은 문자형 숫자를 하나씩 꺼내어 Integer.parseInt() 로 int 변환을 한다. 적용 코드 // using the split() package input_numbers; import java.util.Arrays; imp..

알아가기/Java 2023.01.12

[Java] ArrayList 모든 원소 출력하기

for-each & Arrays 반복 출력 실행을 통해 원소를 매번 출력하는 방법과 Arrays 를 통해 단번에 내부 원소를 확인하는 방법. for-each 를 이용한 출력. // for-each 를 이용한 출력. for (Object element : myList) { System.out.println(element); } Arrays 를 이용한 출력. // Arrays 를 이용한 출력. System.out.println(Arrays.deepToString(myList.toArray())); 실행 코드 import java.util.List; import java.util.ArrayList; import java.util.Arrays; public class MyClass { public static ..

알아가기/Java 2022.12.31

[Java] 파일 상대경로 설정 (Relative Path on Mac)

맥 환경에서 PrintWriter 을 이용하여 절대경로와 상대경로에 파일을 생성하고 그 경로의 차이를 예시로 확인한다. 절대경로 File f = new File("/Users/apple/java/01_test/newFile01.txt"); 기본적으로 맥에서 절대경로는 Users 에서 부터 시작된다. 윈도우로 보자면 C: 맥에서 절대경로로 파일에 접근하려면 "/Users/{account name}/files/01_test/newFile01.txt" 형식으로 작성해야 한다. 절대경로는 Finder 에서 Get info 등을 이용하여 나타나는 경로를 복사 붙여넣기 하면 간단히 해결된다. 이 절대경로를 이용하여 "newFile01.txt" 파일을 생성하였다. 프로젝트 위치 File f = new File("ne..

알아가기/Java 2022.12.27

[Java] 잘못된 입력에 대해 exception 으로 재입력 유도

while 그리고 exception 사용자의 입력을 받을 때 프로그램이 정상적으로 작동하기 위한 조건에 맞지 않는 입력이 들어오면 exception 을 사용하여 재 입력을 유도한다. 이를 위해 while 과 try 그리고 continue 를 이용할 수 있다. 예를 들어 사용해 보면, 입력은 숫자만 받아야 하는 조건이 있다. 숫자인지 문자인지 일단 입력받고 판별하기 위해 모든 입력을 문자로 입력받는다. 그리고 이를 숫자형으로 변환하는 과정에서 try 와 catch 를 사용하고 숫자가 맞다면 실행되고 있는 while loop 를 break 로 빠져나간다. 하지만, 입력 데이터에 문자가 섞여 있다면 catch exception 으로 분류되어 메시지가 출력되고 continue 를 만나게 되어 break 가 실행..

알아가기/Java 2022.12.26

[Java] array 값 정렬하기 w/o Arrays.sort()

조건이 만족하지 않을 때까지 swap array 안의 value 들이 서로 인접해 있는 value 와 서로 크기 비교를 한다. 이 과정은 for loop 으로 이루어지고 그 외부를 감싸는 while loop 를 멈추지 않게 한다. 만약 모든 정렬이 완료되어 더 이상 크기 비교 조건을 만족하지 않으면 그 회 while loop 는 false 값을 유지하여 종료가 된다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] array = {12, 56, 34, 89, 23, 67, 73}; int[] sorted = sortIntegers(array); System.out.println(Arrays..

알아가기/Java 2022.12.24

[Java] for-each 사용

for-each를 이용하여 array 내부값들을 바로 출력하기 loop 를 돌리기위한 변수를 사용하지 않고 array 안의 요소를 순차적으로 바로 출력이 가능하다. 아래의 코드에서 iterate 이 될 객체는 myArray 이고, 각 element 는 myNum 에 하나씩 순차적으로 대입되어 반복 실행된다. public class MyClass { public static void main(String args[]) { int[] myArray = new int[] {5, 4, 3, 2, 1}; for (int myNum : myArray) { System.out.println("element in myArray: " + myNum); } } } // element in myArray: 5 // elem..

알아가기/Java 2022.12.23

[Java] Scanner 와 BufferedReader 사용

Scanner and BufferedReader 콘솔창에서 문자를 입력받을 수 있는 두 입력 함수 Scanner 와 BufferedReader 를 사용할 수 있다. 내용이 짧고 whitespace 가 없는 경우 Scanner 를 사용하여 입력받을 수 있지만, 내용이 길어지고 whitespace 가 있는 경우에는 Scanner 를 사용하게 되면 첫 어절만 입력받게 되고 whitespace 이후의 데이터는 소실된다. 이를 해결하기 위해 BufferedReader 를 사용할 수 있다. BufferedReader 은 whitespace 가 포함된 더 긴 문장을 입력받을 수 있지만 Scanner 와 달리 문자열 String 밖에 읽지를 못한다. 반면 Scanner 은 수와 관련된 int, short, long, ..

알아가기/Java 2022.12.21