Java has 8 primitive data types; char, boolean, byte, short, int, long, float, and double.

 For this exercise, we'll work with the primitives used to hold integer values (byte, short, int, and long):

  • byte is an 8-bit signed integer.
  • short is a 16-bit signed integer.
  • An int is a 32-bit signed integer.
  • long is a 64-bit signed integer.

Given an input integer, you must determine which primitive data types are capable of properly storing that input.

To get you started, a portion of the solution is provided for you in the editor.

Reference: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Input Format

The first line contains an integer, , denoting the number of test cases.
Each test case, , is comprised of a single line with an integer, , which can be arbitrarily large or small.

Output Format

For each input variable  and appropriate primitive , you must determine if the given primitives are capable of storing it. If yes, then print:

n can be fitted in:
* dataType

If there is more than one appropriate data type, print each one on its own line and order them by size (i.e.: ).

If the number cannot be stored in one of the four aforementioned primitives, print the line:

n can't be fitted anywhere.

Sample Input

5
-150
150000
1500000000
213333333333333333333333333333333333
-100000000000000

Sample Output

-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

Explanation

 can be stored in a short, an int, or a long.

 is very large and is outside of the allowable range of values for the primitive data types discussed in this problem.


Solution:


import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();
        while (t-- > 0) {
            String input = sc.next();  // Read the number as a string
            boolean canFit = false;
           
            try {
                long n = Long.parseLong(input);  // Try to parse it as a long
               
                // Output for fitting in byte
                if (n >= Byte.MIN_VALUE && n <= Byte.MAX_VALUE) {
                    System.out.println(n + " can be fitted in:");
                    System.out.println("* byte");
                    canFit = true;
                }
               
                // Output for fitting in short
                if (n >= Short.MIN_VALUE && n <= Short.MAX_VALUE) {
                    if (!canFit) System.out.println(n + " can be fitted in:");
                    System.out.println("* short");
                    canFit = true;
                }
               
                // Output for fitting in int
                if (n >= Integer.MIN_VALUE && n <= Integer.MAX_VALUE) {
                    if (!canFit) System.out.println(n + " can be fitted in:");
                    System.out.println("* int");
                    canFit = true;
                }
               
                // Output for fitting in long
                if (n >= Long.MIN_VALUE && n <= Long.MAX_VALUE) {
                    if (!canFit) System.out.println(n + " can be fitted in:");
                    System.out.println("* long");
                }
               
            } catch (NumberFormatException e) {
                // If the number is too large for `long`, it will throw an exception
                System.out.println(input + " can't be fitted anywhere.");
            }
        }
       
            sc.close();
       
    }
}

Popular posts from this blog

When a method in a subclass overrides a method in superclass, it is still possible to call the overridden method using super keyword - Hacker Rank Solution.

You are given a date. You just need to write the method getDay which returns the day on that date - Hacker Rank Solution.