알아가기 51

[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

[Flutter] GradleException 오류 해결

오류 발견 플러터 코드를 작성할 때 VS Code 를 이용해서 작성한다. 안드로이드 스튜디오보다 훨씬 가독성이 있고 훨씬 가볍기 때문이다. VS Code 로 에뮬레이터를 돌려보고 apk 로 내보내어 테스트를 하는 등 큰 문제는 없으나 완성된 앱을 출시하기 위해서 Generate Signed Bundle 을 통해 aab 파일을 만들 때에는 CLI 가 불편하다. keystore 에서 키를 불러오고 필요한 정보를 입력하고 저장하는 것은 GUI 가 훨씬 편하다. 예전에는 빌드하면서 GradleException 를 발견하고 그냥 해결하고 말았는데 이번에 확인해 보니 VS Code 에서 작성된 코드를 안드로이드 스튜디오에서 불러오니 GradleException 오류가 생성되는 것을 확인하였다. 해결 방법 이 오류를..

[Flutter] "버전 코드는 이미 사용되었습니다. 다른 버전 코드를 사용해 보세요." 해결

버전 코드 오류 이전에 작성된 플러터 앱을 업데이트하기 위해서 Generate Signed Bundle 로 aab 파일을 만들고 구글 개발자 콘솔에 업로드를 하는 과정에서 "버전 코드는 이미 사용되었습니다. 다른 버전 코드를 사용해 보세요." 오류를 맞이 하였다. 예전에도 이런 경험이 한번 있었기에 기록과 기억을 위해 포스트를 작성한다. pubspec.yaml 파일을 보면 기본값으로 version: 1.0.0+1 으로 되어있다. 그러면서 앱의 새로운 기능이나 오류를 해결하면서 업데이트 과정을 거치면서 버전을 올리면서 version: x.x.x+x 와 같이 계속 수정되어야 한다. 이때, 위의 주석에 나온 것처럼 빌드 넘버를 표시하고 있고 앞쪽 닷으로 나뉜 것은 버전 네임으로 사용되고 뒤의 +x 는 버전 코..

[Flutter] mp3 사운드 파일 재생 하기 (매우 간단하게..)

우리의 시간은 소중하니까 플러터에서 소리 파일을 재생하려고 찾아보니 audioplayers 패키지가 나온다. LIKES 와 POPULARITY 를 확인 보니 그냥 이거 사용하라는 말이다. 그런데 문제가 생겼다. Getting Started tutorial 을 따라 해도 안 되는.. 이런.. 왜 그런지는 모르겠는데 일단 되는 방법을 찾아서 포스팅해둔다. 현시점 (22년 11월) 에서 되는 것이기에 패키지가 업데이트되거나 변경되면 방법이 달라질 수 있다. (1년 전.. 몇 달 전 유튜브 정보조차 안 맞음.) 따라서 플러터 기본 앱에 코드를 추가하여 빠르게 작동 확인을 해보고 다음 응용 단계를 밟자는 것이 이 포스팅의 의도이다. 뻘짓 싫어 ㅠㅠ 기본 카운터 앱에 버튼 하나 추가시켜 플레이 해보기 우리의 시간은..

[Flutter] Please enable Developer Mode in your system settings. 해결

개발자 모드 플러터에 패키지를 추가하다가 exit code 1 을 보게 되어 해결 기록을 남겨둔다. audioplayer_test 라는 플러터 초기 문서를 생성한 후 audioplayers: ^1.1.1 를 pubspec.yaml 에 추가하고 저장하는데 exit code 1 이 출력되었다. [audioplayer_test] flutter pub get Running "flutter pub get" in audioplayer_test... 3.5s Building with plugins requires symlink support. Please enable Developer Mode in your system settings. Run start ms-settings:developers to open set..

[Flutter] 앱 릴리즈 하려는데 Execution failed for task 뜰 때

Generate Signed Bundle 안됨 VS Code 에서 플러터 앱을 작성하고 안드로이드 스튜디오에서 기존에 작성된 앱을 업데이트하여 버전 업된 Build > Generate Signed Bundle 을 하려는데 먹통이 되었다. 원래대로라면 팝업이 뜨고 앱 key store 에 비밀번호를 입력해야 하는데 여기서 일단 문제 발생. 이 문제는 flutter upgrade 및 android studio 빌더였나.. 둘을 업데이트 하니 해결되었다. Execution failed for task ':app:compileFlutterBuildRelease'. 메시지 뜸 이후, 다시 앱 빌드를 하려는데 Execution failed for task ':app:compileFlutterBuildRelease'..