[Java, NullPointerException] miert nem jo a kovetkezo kod (Boxing and unboxing) ?
feladat:
Implement a method for converting a Long value to int (primitive type) according to the following rules:
if the given value is null the method should return the default value for ints;
if the given value is greater than Integer.MAX_VALUE the method should return the max value for ints;
if the given value is lesser than Integer.MIN_VALUE the method should return the min value for ints;
otherwise, the method should return the same value as the passed argument.
import java.util.Scanner;
public class Main {
public static int convert(Long val) {
// write your code here
if( "null".equals(val) ){
return 0;
} else if(val > Integer.MAX_VALUE){
return Integer.MAX_VALUE;
} else if( val < Integer.MIN_VALUE){
return Integer.MIN_VALUE;
}else{
return val.intValue();
}
}
/* Do not change code below */
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String val = scanner.nextLine();
Long longVal = "null".equals(val) ? null : Long.parseLong(val);
System.out.println(convert(longVal));
}
}
<script src="//onlinegdb.com/embed/js/Ay7SQ6G5y?theme=dark"></script>
a null az ertek es a "null" igy String lessz - itt az egyik baj ...
(Y)
Amit itt linkeltél: [link]
Az nálam lefut.
:)))))
Validációt kihagytad. :D
1000000000000000000000000000000000000000000000000000000000000000000000
Exception in thread "main" java.lang.NumberFormatException: For input string: "1000000000000000000000000000000000000000000000000000000000000000000000"
___ at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
___ at java.base/java.lang.Long.parseLong(Long.java:692)
___ at java.base/java.lang.Long.parseLong(Long.java:817)
___ at Main.main(Main.java:24)
...Program finished with exit code 0
Press ENTER to exit console.
lehet ilyen validaciot nem kell csinalni, mert van egy alap kod amit ki kell egesziteni.
Ennek nem kene hogy mar mukodjon:
most nem "null".s2.equals(val) - al hasonlitom ossze. Letrehozok egy ugyan olyan tipusu valtozot aminek az erteke null.
Long s2 = null;
if ( s2.equals(val) ) {
De most komolyan, mért kellett átírni a sorrendet?
Eddig mindig a null ellenőrzéssel kezdted (bár hibásan)
Majd most ezt hátra raktad és az első 2 if-nél külön vizsgálod, hogy nem null-e.... méééééért?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!