문제 20492번

오답 (1)
error: <identifier> expected

<identifier> expected 라는 에러를 봤을 때, 식별자가 왜 문제지? 라는 생각이 들었다.
이전까지 나에게는 "식별자=변수관련" 느낌이 강했기에, 변수 선언 잘 되어 있는데? ... 싶었기 때문이다.
(이거 말고도 추가적으로 잘못된 부분 아래에 있습니다.. 아주 막무가내입니다)
어차피 잘 모르는거 하나씩 알아가보자 싶어서, 구글링 해보았다.
이 에러는 클래스 이름, 메소드 이름, 변수 이름 등의 식별자(identifier)가 위치해야 할 곳에 식별자가 존재하지 않기 때문에 발생하는 문법 오류이다.
- 선언 이외의 코드가 메소드 내부가 아닌 메소드 외부에 존재하는 경우
- 그냥 변수명을 누락한 경우
- 변수의 타입을 누락한 경우
java_identifier_expected_오류_해결하기
wiki.terzeron.com
처음에는 변수 타입을 잘못 지정했다고 생각했다.
정수를 우선 입력 받은 후에, 퍼센트 계산을 하게 되니까 형변환을 (double) 해야겠다 싶었다.
근데 암만 봐도 .. 내 눈에 추가적인 에러가 안 보였다.
"뭐가 잘못되었는지 아무리 봐도 모르겠습니다" 글이 정말 내 심정이었다.
https://www.codeit.kr/community/questions/UXVlc3Rpb246NWUzNDUyMjU4MGU1MTMzNzNkOTYxY2U0
뭐가 잘못되었는지 아무리 봐도 모르겠습니다.
public class BankAccount { private int balance; private Person owner; public void setBalance(int newBalance){ balance = newBa
www.codeit.kr
나와 같은 에러를 만든 사람 덕분에 안 좋은 습관 하나를 고칠 수 있었다.
public static void main(String[] args) 뒤에 { } 를 사용할 것 !!
이것도 .. intellij가 알아서 해주니까 별 생각 없었다.
오답 (2)

오답(1) 부분을 고쳤는데도, 여전히 에러가 떴다.
https://www.acmicpc.net/board/view/98832
https://www.acmicpc.net/board/view/111658
no suitable method found for print(int,boolean,char,double) error?
I was trying to print (int, boolean, char, double) in a same println statement . class Test1 { public static void main(String s[]) { int a =5; char c = 'a'; boolean b = true; double d = 12.46; Sy...
stackoverflow.com
Try a + ", " + b + ", " + c + ", " + d
한 사이트의 글을 보고, 이 방법대로 하니 성공했다.
언어가 다 섞여서 뭐가 뭔지 .. 모르는 것 같다
자바는 쉼표로 여러 값을 나열하여 출력하지 않는다.
대신 + 연산자나 printf, String.format 등을 이용해 여러 값을 하나의 문자열로 만들어 출력할 수 있다.
기본 출력문은 println()은 변수의 값을 그대로 출력하므로, 값을 변환하지 않고는 다른 형식으로 출력할 수 없다.
반면에 printf()는 지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력할 수 있다.
그리고 문제 요구사항을 꼼꼼하게 파악하지 못했다는 걸 2트가 되어서 알아차렸다.
2번 조건인 상금의 80%를 필요 경비로 인정받고, 나머지 금액 중 22%만을 제세공과금으로 납부하는 경우는
N*0.8+N*0.2*0.78을 해주어야 실제로 수령하는 금액을 계산할 수 있다.
오답 (3)

출력값이 소수형이 아닌 정수형으로 나와야 하기에 N1, N2는 형변환이 필요하다.
따라서 System.out.println()에 있는 N1, N2 각각에 (int)를 해준다.
성급하게 문제를 풀다보니 중요한 것 다 빼먹는다. 형변환 !!
해결방안
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
double N1 = N * 0.78;
double N2 = N * 0.8 + N * 0.2 * 0.78;
System.out.println((int) N1 + " " + (int) N2);
}
}
맨날 눈으로 공부했더니 손에 안 익는다.
요즘엔 복습하는 겸 포스팅도 하는데, 2번 푸니까 이제는 좀 괜찮아진듯?
그리고 문제 풀 때 너무 성급하다.
어떻게 풀지 머리속으로 구조화를 시킨 후에 입력해야겠다.
많이도 시도해봤네 ,,

'BAEKJOON' 카테고리의 다른 글
| [ 백준 - JAVA ] 2562번 최댓값 (1) | 2024.11.14 |
|---|---|
| [ 백준 - Java ] 1001번, 10998번, 1008번 (0) | 2024.11.07 |
| [ 백준 - Java ] 1000번 (1) | 2024.10.29 |