por - tipos de datos y declaraciones en java
Encontrar el tipo de datos Java adecuado (3)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNextLine()) {
BigInteger number = new BigInteger(input.nextLine());
int bitLength = number.bitlength();
if (bitLength <= Bytes.SIZE)
System.out.println("/u8211 byte");
if (bitLength <= Short.SIZE)
System.out.println("/u8211 short");
if (bitLength <= Int.SIZE)
System.out.println("/u8211 int");
if (bitLength <= Long.SIZE)
System.out.println("/u8211 long");
if (bitLength > Long.SIZE)
System.out.println(number + " can''t be fitted anywhere.");
}
}
Tarea: para encontrar un tipo de datos adecuado Entrada de muestra: 5
-150
150000
1500000000
213333333333333333333333333333333333
-100000000000000
Muestra de salida:
-150 can be fitted in:
short
int
long
150000 can be fitted in:
int
long
1500000000 can be fitted in:
int
long
213333333333333333333333333333333333 can''t be fitted anywhere.
-100000000000000 can be fitted in:
long
Error 1:
error: cannot find symbol
int bitLength = number.bitlength();
^
Error 2:
symbol: method bitlength()
location: variable number of type BigInteger
Error 3:
error: cannot find symbol
if (bitLength <= Int.SIZE)
^
symbol: variable Int
location: class Solution
Error: carácter ilegal: / 8211 antes de cada instrucción If
Para poner este personaje en tu código us /u8211
Si la declaración y cómo se tomará la entrada del número que no se puede acomodar en cualquier tipo de datos?
Debe usar un tipo de datos que pueda acomodarse y numerarse.
Prueba esto en su lugar.
while (input.hasNextLine()) {
BigInteger number = new BigInteger(input.nextLine());
int bitLength = number.bitLength() + 1;
if (bitLength <= Bytes.SIZE)
System.out.println(" /u8211 byte");
if (bitLength <= Short.SIZE)
System.out.println(" /u8211 short");
// more checks.
if (bitLength > Long.SIZE)
// too big.
Habiendo solucionado el problema, hay mucho más por hacer para que funcione, pero usar BigInteger.bitLength () es la solución más elegante.
no se puede encontrar el símbolo if (bitLength <= Int.SIZE)
No hay ningún tipo Int
en Java, es Integer
.
Lee el número línea por línea. Cuente el bit utilizando BigInteger
y divídalo entre 8 para la simplificación de la caja del switch
. Echa un vistazo al siguiente código:
Scanner input = new Scanner(new File("so/input.txt"));
while (input.hasNextLine()) {
BigInteger number = new BigInteger(input.nextLine().trim());
int bitLength = number.bitLength();
int len = bitLength / 8;
StringBuilder output = new StringBuilder(number.toString() + " can be fitted in:/n");
switch (len) {
case 0:
output.append(" byte");
case 1:
output.append(" short");
case 2:
case 3:
output.append(" int");
case 4:
case 5:
case 6:
case 7:
output.append(" long");
System.out.println(output);
break;
default:
System.out.println(number.toString() + " can''t be fitted anywhere.");
}
}
Simplemente puede poner las condiciones con el rango de tipos de datos y verificar si el número de entrada corresponde a qué tipo de datos.
class FindDataType {
public static void main(String[] argh) {
Scanner sc = new Scanner(System.in);
//no. of input values
int t = sc.nextInt();
for (int i = 0; i < t; i++) {
try {
//Take input as long data type
long x = sc.nextLong();
System.out.println(x + " can be fitted in:");
//Putting conditions to check the data type
if (x >= -128 && x <= 127) {
System.out.println("* byte");
System.out.println("* short");
System.out.println("* int");
System.out.println("* long");
} else if (x >= -32768 && x <= 32767) {
System.out.println("* short");
System.out.println("* int");
System.out.println("* long");
} else if (x >= -2147483648 && x <= 2147483647) {
System.out.println("* int");
System.out.println("* long");
} else if (x >= -9223372036854775808l
&& x <= 9223372036854775807l) {
System.out.println("* long");
}
} catch (Exception e) {
//Printing exception if no data type matches.
System.out.println(sc.next() + " can''t be fitted anywhere.");
}
}
sc.close();
}}