জাভা: একটি গৃহস্থালি থেকে পার্স ইনট মান


223

আমি কেবল জানতে চাই যে স্ট্রিংয়ের একটি অক্ষর থেকে কোনও সংখ্যাকে পার্স করার আরও ভাল সমাধান আছে কিনা (ধরে নিলাম যে আমরা জানি যে সূচক n এর অক্ষরটি একটি সংখ্যা)।

String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);

//result: x = 5

(এটি নিছক উদাহরণ হিসাবে বলার অপেক্ষা রাখে না)

উত্তর:


444

ব্যবহার করে দেখুন Character.getNumericValue(char)

String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);

সৃষ্টি করে:

x=5

সম্পর্কে চমৎকার জিনিস getNumericValue(char)যে এটি মত স্ট্রিং সঙ্গে কাজ করে "el٥"এবং "el५"যেখানে ٥এবং সংখ্যার 5 পূর্ব আরবি ও হিন্দি / সংস্কৃত যথাক্রমে হয়।


62

নিম্নলিখিত চেষ্টা করুন:

str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;

আপনি যদি চর '0' দ্বারা বিয়োগ করেন তবে ASCII মানটি জানা দরকার।


1
এ সম্পর্কে কারণ কী? ফলাফলটি ASCI তে '0' এবং asci তে চরের মধ্যে বিয়োগফলক ???
ইগ্যাসিও চিয়াজো

10
@msj কারণ '0', '1', '2', ...ascii এর মানগুলি আরোহী। উদাহরণস্বরূপ, ascii তে '0' 48, '1' 49, ইত্যাদি So তাই আপনি '2' - '0'যদি সত্যিই নেন তবে ঠিক পান 50 - 48 = 2। এই নীতিটি আরও ভালভাবে বোঝার জন্য একটি ASCII টেবিলটি দেখুন। এছাড়াও, এর 'x'অর্থ জাভাতে চরিত্রটির আস্কি মূল্য পান।
কেভিন ভ্যান রিকগেম

1
@ কেভিনভানরাইক্কেম আপনাকে ধন্যবাদ! আমি কেন - '0'কাজ করেছি তা সন্ধান করছিলাম ... আমি ভেবেছিলাম জাভা চরগুলি বা যা কিছু ব্যাখ্যা করেছিল তা কিছু গভীর জাদু ছিল ... কিছু জটিল করার জন্য এটি সত্যই আমার ঘটনা ছিল ...
স্কুটগুলি

যদিও এটি একটি ঝরঝরে কৌশল, এটি ব্যবহারের চেয়ে কম পঠনযোগ্যCharacter.getNumericValue
জানাক মীনা

33

পারফরম্যান্সের দিক থেকে এটি সম্ভবত সেরা, তবে এটি মোটামুটি:

String element = "el5";
String s;
int x = element.charAt(2)-'0';

আপনি যদি ধরে নেন যে আপনার চরিত্রটি একটি অঙ্ক এবং কেবল জাভা হিসাবে ইউনিকোড ব্যবহার করে এমন ভাষায় ...


7
স্ট্রিং দিয়ে এটি চেষ্টা করুন "el५"যেখানে ভারতে 5 নম্বর রয়েছে। :)
বার্ট কায়ার্স

3
আমি নিশ্চিত যে আপনি এই উদাহরণটি খুঁজে পেতে কঠোর পরিশ্রম করেছেন ... :-) ঠিক আছে, আপনাকে যদি অ আরব অংকগুলি পার্স করতে হয় তবে এই পদ্ধতিটি এড়িয়ে চলুন। যেমন আমি বলেছিলাম, এটি মোটামুটি। তবে এটি এখনও কাজ করে এমন 99.999% ক্ষেত্রে এটি দ্রুততম পদ্ধতি।
অ্যালেক্সিস ডুফরনয়

@ অ্যালেক্সিস ডুফরনয়, কেন বিয়োগ চরিত্রটি '0'পূর্ণসংখ্যার মান ফেরত দেবে?
ইসতিয়াক আহমেদ

1
ASCII টেবিলের চরিত্র '9' = IN 57, চর '0' = int 48 থেকে মানগুলি দেখুন, এর ফলাফল '9' - '0' = 57 - 48 = 9
WHDeveloper

1
একটি যাদুমন্ত্র মত কাজ করে. lol @ counterexample এবং সমস্ত উত্তরসূচক যারা আপনার উত্তরটি অনুলিপি করেছে। পরিহাস.
অগস্ট

16

খালি '0' (শূন্য) দ্বারা বিয়োগ করে একটি চর (অঙ্কের '0' থেকে '9' তে) ইনট (0 থেকে 9) তে রূপান্তর করা যায়, যেমন, '5' - '0' ইন্টি 5 দেয়।

String str = "123";

int a=str.charAt(1)-'0';

6
String a = "jklmn489pjro635ops";

int sum = 0;

String num = "";

boolean notFirst = false;

for (char c : a.toCharArray()) {

    if (Character.isDigit(c)) {
        sum = sum + Character.getNumericValue(c);
        System.out.print((notFirst? " + " : "") + c);
        notFirst = true;
    }
}

System.out.println(" = " + sum);

0

এর ANDসাথে বাইনারি ব্যবহার 0b1111:

String element = "el5";

char c = element.charAt(2);

System.out.println(c & 0b1111); // => '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5

// '0' & 0b1111 => 0b0011_0000 & 0b0000_1111 => 0
// '1' & 0b1111 => 0b0011_0001 & 0b0000_1111 => 1
// '2' & 0b1111 => 0b0011_0010 & 0b0000_1111 => 2
// '3' & 0b1111 => 0b0011_0011 & 0b0000_1111 => 3
// '4' & 0b1111 => 0b0011_0100 & 0b0000_1111 => 4
// '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '6' & 0b1111 => 0b0011_0110 & 0b0000_1111 => 6
// '7' & 0b1111 => 0b0011_0111 & 0b0000_1111 => 7
// '8' & 0b1111 => 0b0011_1000 & 0b0000_1111 => 8
// '9' & 0b1111 => 0b0011_1001 & 0b0000_1111 => 9

0
String element = "el5";
int x = element.charAt(2) - 48;

চর থেকে '0' = 48 এর ascii মান বিয়োগ করা হচ্ছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.