java - उपयुक्त जावा डेटाटाइप खोजना
int byte (2)
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.");
}
}
कार्य: एक उपयुक्त डेटा प्रकार नमूना इनपुट ढूंढने के लिए: 5
-150
150000
1500000000
213333333333333333333333333333333333
-100000000000000
नमूना आउटपुट:
-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
त्रुटि 1:
error: cannot find symbol
int bitLength = number.bitlength();
^
त्रुटि 2:
symbol: method bitlength()
location: variable number of type BigInteger
त्रुटि 3:
error: cannot find symbol
if (bitLength <= Int.SIZE)
^
symbol: variable Int
location: class Solution
त्रुटि: अवैध वर्ण: \ 8211 प्रत्येक अगर बयान से पहले
आप में यह वर्ण डाल करने के लिए हमें \u8211
यदि बयान और कैसे संख्या के इनपुट ले जाएगा जो किसी भी डेटा प्रकार में समायोजित नहीं किया जा सकता है?
आपको एक डेटाटाइप का उपयोग करना चाहिए जो कि समायोजित और नंबर कर सकते हैं।
इसकी बजाय इसे आज़माएं
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.
समस्या को करने के बाद, यह काम करने के लिए बहुत कुछ करना है, लेकिन BigInteger.bitLength () का उपयोग करना अधिक सुरुचिपूर्ण समाधान है।
प्रतीक नहीं मिल सकता है अगर (bitLength <= Int.SIZE)
जावा में कोई प्रकार Int
नहीं है, यह Integer
।
आप बस डेटा प्रकारों की सीमाओं के साथ स्थितियों को रख सकते हैं और जांच कर सकते हैं कि इनपुट नंबर किस प्रकार डेटा प्रकार में आता है।
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();
}}