2014-09-18 4 views
1

이 코드있어, int 형으로 문자열을 구문 분석? 도입 된 값이 null (스캐너의 빈 공간, enter와 같은) 인 경우 나중에 사용할 급여가 null로 설정되기 때문입니다.자바는 널

문제는 "null"또는 "int 값"이 필요하다는 것입니다. 에서

은 "다른"나는이 작업을 수행 할 수 없습니다

salary = Integer.parseInt(salary); 

ID가 오류가 발생하지, 나도이 null로로 INT 구문 분석 할 수 있기 때문이다.

public static Date changeDate(String introducedDate) throws ParseException { 
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); 
    java.util.Date sqlDate = sdf.parse(introducedDate); 
    java.sql.Date newSqlDate= new java.sql.Date(sqlDate.getTime()); 
    return newSqlDate; 
} 

introducedDate 그것은 예외가 발생합니다 null의 경우 날짜가 너무 NULL 인 도입하는 경우, 내가 어떻게 방법은 NULL을 반환하는 것을 변경할 수 있습니다

그리고이 methodto 날짜를 변환?

+0

포맷팅 및 어떤 일을하기 전에 경우이 추가? – Keppil

+0

if (도입 날짜 == null) {return null}? 그러나 그 방법에 2 개의 수익이있을 것입니다. 거기서 다른 사람도 있습니다. – Alpha2k

+0

그렇습니다. 그렇습니다. – Keppil

답변

2

1 부

것은 내가 중 하나가 "널 (null)"또는 "int 값"을 필요로한다는 것입니다. 당신이 널 (NULL) 정수 값을 가지고 싶다면

, 래퍼 클래스 Integer를 사용

Integer salaryNew = null; 
if (!salary.isEmpty()) { 
    salaryNew = Integer.parseInt(salary); 
} 

2 부

introducedDate가 null의 경우 것 예외를 throw합니다. 도입 된 날짜가 NULL이라도 NULL을 반환하도록 메서드를 어떻게 변경할 수 있습니까?

매개 변수의 값을 확인해야합니다 (@ nem의 대답을 참조하십시오).

+0

이상한, 널 포인터 예외가 생겨서, 나는 직원처럼 그 salaryNew를 엔티티로 설정해야합니다.setSalary (salaryNew) 및 null pinter lol 가져 오기. 날짜가 있지만 연봉이 아닌 코드로 작업 – Alpha2k

+0

코드에 대한 링크 http://www.mediafire.com/view/2gtq1bsst1cf5nl/java.png – Alpha2k

+0

@ Alpha2k 직원 내부의 급여 유형이 'int'로 예상됩니다. 이미 발견 된 항목에는 'null'값을 할당 할 수 없습니다. 컴파일러가'null'을 unbox하려고하면 NPE를 던집니다. nullable이되기 위해서는'salaryNew'가 정말로 필요합니까? – azurefrog

1

첫 번째 질문에 대해 @ azurefrog의 답변을 확인하십시오.

introduDate가 null 인 경우 예외가 발생합니다. 도입 된 날짜가 NULL이면 해당 메소드가 어떻게 NULL을 반환 할 수 있습니까?

public static Date changeDate(String introducedDate) throws ParseException { 
    if(introducedDate == null) { // ADD THIS CHECK 
     return null; 
    } 
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); 
    java.util.Date sqlDate = sdf.parse(introducedDate); 
    java.sql.Date newSqlDate= new java.sql.Date(sqlDate.getTime()); 
    return newSqlDate; 
} 
+0

답변을 결합 할 수있는 방법이 있습니까? ;-) – azurefrog

+0

@azurefrog 나는 그렇게 생각하지 않는다 haha ​​그 다음 다시, 우리는 half-answer를 위해 upvote를 양쪽 다 얻었다 그래서 나는 그것이 조합 haha다고 생각한다. – nem035

0

당신이 할 수있는 -

if(salary != null && ! salary.isEmpty()) 
{ 
    return Integer.parseInt(salary); 
}else{ 
     return null; 
} 

를 두 번째 부분에 대한 조건`if` 문을 사용

if(introducedDate == null) { 
     return null; 
    }