본문 바로가기

국비필기노트/Java

Java 오류

▶syntax error

-. 문법적 오류 발생

 

▶Exception in thread "main" java.util.IllegalFormatConversionException: f !

-. "main" java.util 스레드에 예외가 있습니다.잘못된 형식 변환예외: f !

-. String.format에서 정수 형태를 %f라고 표현해서 발생하는 오류이다.

   %f -> %d로 변경하면 해결된다.

 

▶java type mismatch: cannot convert form int to byte

-. Java 형식 불일치: int를 바이트로 변환할 수 없습니다

-. byte 유형이라면 작업을 수행할 수 있는 명령집합처리를 했는지 확인하기

   ex) byte c = (byte)(a + b);

 

▶Syntax error on token ";", ,expected

-. 토큰 ";"에 대한 오류. ,이(가) 필요합니다.

-. 필요한 키워드를 누락하는 경우에 발생하며 누락된 키워드를 찾아 넣는다.

-. main()을 누락시키면 위의 에러가 발생하는 경우가 있다.

-. 메서드가 아닌 클래스에 바로 조건문, 반복문, 출력문등을 작성하였는지 확인한다.

 

▶Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Array.main(Array.java:11)

-. 할당되지 않은 인덱스를 사용했을 때 나오는 에러

-. int array = new int [3]으로 배열을 선언한 경우 array 의 값에 [4]를 입력은 불가능하다.

 

▶Duplicate method Student(int) in type Student

-. Student 형식의 중복 메서드 Student(int)

-. 이름 및 매개 변수 유형이 동일한 매서드는 두 개 이상 사용할 수 없다.

 

▶The constructor Student() is undefined

-. 생성자가 정의되지 않았습니다.

-. java 메서드에서 기본 파라미터가 없는 생성자는 기본생성자는 개발자가 따로 설정을 하지 않아도 자동으로 java가 만들어주지만 다른 생성자(파라미터를 받는)가 기록된 경우에는 제공되지않는다.

-. 해당경우엔 기본생성자가 지정이 되지 않았기 때문에 발생하는 오류

-. 클래스영역에 Student(){} 로 기본생성자를 생성해주면 오류가 해결된다.

 

The public type [class name] must be defined in its own file 

-. public 타입 클래스명은 자신이 속해 있는 파일에 정의되어있어야한다는 오류

-. public 은 자바파일 한개당 하나만 가질 수 있고 그 클래스는 파일명과 동일한 이름을 가지고 있어야한다.

-. 가독성을 위해 public은 하나만 가질 수 있도록 java에서 규칙을 만들어 놓았다.

-. 이 오류가 발생하면 public이 2개 이상이 설정되어 있다는 의미로 하나를 지워준다.

 

▶Implicit super constructor Article() is undefined for default constructor 

-. 부모 생성자에 기본 생성자가 없다.

-. 자바는 부모의 매개변수가 없는 기본생성자를 찾는 것이 기본이다. 그래서 자식생성자를 호출할 때, 부모의 기본 생성자부터 찾아 올라가게되는 것이다. 

-. 예를들어 부모생성자가 사람, 자식이 여자라면 사람이고 나서야 여자,남자를 정할 수 있는데 우리는 여자클래스만 인스턴스화 하도록 코드를 짰으니, 먼저 사람인 이후 여자를 찾을 수 있도록 부모클래스의 생성자를 자식 클래스보다 먼저 호출해준다.

-. 부모클래스에 매개변수가 없는 기본생성자를 만든다.

   자식클래스에서 부모클래스의 생성자를 명시적으로 지정하는 super()를 사용한다.

▶The nested type QNAArticle cannot hide an enclosing type

-. 클래스 이름을 중복 정의해서 생긴 문제이다.

-. 겹치는 이름이 없는지 확인하고 중복을 제거한다.

▶The return type is incompatible with ColorTV.printProperty()

-. ColorTv의 printProperty()의 메서드에 있는 return타입과 성질이 맞지 않다.

-. 상속관계에 있는 부모클래스(ColorTv)와 자식클래스에 같은 이름의 메서드가 있는데 리턴타입을 다르게 설정하면 아래와 같은 에러가 발생이 된다. 

-. 메서드의 서명: 1. 메서드이름 2. 메서드 리턴타입 3. 메서드의 매개변수 갯수,순서,데이터타입 

메서드의 형태를 정의하는 사항들을 통틀어 메서드의 서명이라고 하는데 해당 오류는 메서드간 서명이 달라서 발생한 문제이다. 

 

▶List cannot be resolved to a type

-. List를 import 시켜주지 않아서 발생하는 에러

-. 목록을 유형으로 확인할 수 없습니다.

 
 

 

'국비필기노트 > Java' 카테고리의 다른 글

자바(java)_메서드  (0) 2022.03.11
java - 2차 배열  (0) 2022.03.11
java 반올림 : Math.round(), String.format(), Printf()  (0) 2022.03.08
JAVA 설치 방법  (0) 2022.03.03
JOptionPane  (0) 2022.02.28