PDA

View Full Version : سوال: متد تبدیل کاراکتر به عدد رو میخوام لطفا کمک کنید



tibadan
جمعه 09 اسفند 1392, 15:20 عصر
سلام
متد تبدیل کاراکتر به عدد رو میخوام یعنی متد
Integer.parseInt("1234");
که عدد 1234 رو میده رو نمیخوام متدی که پارس اینت تبدیل میکنه رو میخوام یعنی اگه بهش 1234b بدیم ارور بده و اگر 1234 بدیم 1234 رو چاپ کنه .
با دستور switch case نوشته بشه
ممنون

kaveh.n
یک شنبه 11 اسفند 1392, 07:48 صبح
با سلام. کارکتران به رشته تبدیل کنید و سپس خیلی راحت از Exception استفاده کنید و بدون نیاز به متد خاصی و switch case کارتان راه می افتد

متد مورد نظر :





private static int convert (String a) throws NumberFormatException
{
return DatatypeConverter.parseInt(a);
}


و در main :



try {
System.out.println(convert(f));
} catch (NumberFormatException e) {


System.out.println("Your Inpute is Not a Number");
}

tibadan
یک شنبه 11 اسفند 1392, 08:12 صبح
با سلام. کارکتران به رشته تبدیل کنید و سپس خیلی راحت از Exception استفاده کنید و بدون نیاز به متد خاصی و switch case کارتان راه می افتد

متد مورد نظر :





private static int convert (String a) throws NumberFormatException
{
return DatatypeConverter.parseInt(a);
}


و در main :



try {
System.out.println(convert(f));
} catch (NumberFormatException e) {


System.out.println("Your Inpute is Not a Number");
}





خیلی ممنون از راهنماییت اما داداش از این روش راحت تر هم هست کافیه بنویسی : ParsInteger() و داخل پرانتز هم عددو قرار بدی تبدیل میکنه اما من اینو نمیخوام من متد همین تبدیل کردنشو میخوام که چطوری میاد رشته رو به عدد تبدیل میکنه روششو میدونم اما نمیدونم چی بنویسم!
یعنی اول باید طول رشته رو اندازه بگیریم بعدش طول رشته رو برابر با یه آرایه قرار بدیم و آرایه رو به ترتیب با سویچ ها مقایسه کنیم یعنی مثلا رشته 1234 رو میگیریم یکی یکی کاراکترها رو با سویچ ها مقایسه میکنیم یعنی کاراکتر 1 ,2,3,4, رو با سویچ صفر تا 9 مقایسه میکنیم و با هر کدوم که برابر بود عددو چاپ میکنیم توی سویچ ها هم فقط کافیه اعداد به ترتیب از صفر تا 9 قرار بگیرند و یه سویچ هم دیفالت باشه تا اگر در رشته بجای عدد کاراکتر بود اون دیفالت اجرا بشه این کل ماجراست فقط نمیدونم چطوری به زبان جا وا تو نت بینز بنویسمش:D

vahid-p
جمعه 16 اسفند 1392, 22:52 عصر
فکر نمیکنم چیزی که میگید نیاز باشه. مگر اینکه اجباری برای اینکار باشه. شما با یه شرط چک میکنید عدد هست، بقیش هم با یه ضرب و جمع رشته رو به عدد تبدیل میکنید ( خط اولش برای محکم کاریه فقط ) . برای اینکه براتون مفید باشه و یک کد آماده نباشه، برای تمرین میتونید با همین روش و با اندکی تغییرات برای اعداد اعشاری خودتون انجام بدید. عدد اعشاری فقط باید بین قسمت قبل از "." و بعدش تفاوت قائل بشید. همین.

public static int stringToInteger(String str){
if(str==null || str.length()==0) throw new NullPointerException();
int num=0;
char ch;
for(int i=0;i<str.length();i++){
ch=str.charAt(i);
if(ch<='9' && ch>='0'){
num=num*10+(str.charAt(i)-'0');
}else{
throw new NumberFormatException();
}
}
return num;
}

vahid-p
شنبه 17 اسفند 1392, 11:02 صبح
راستی در مورد این سوالات که میدونید معمول هست و کلا هر چی جز کتابخونه استاندارد جاوا باشه، مطمئن باشید تو نت وجود داره. کافیه مثلا سرچ کنید : implementation of string to integer method in java
حالا میتونید برای پیاده سازی هر متد دیگه ای مثل sin , cos , tan ,integer to string و... از همین روش برای پیدا کردنشون استفاده کنی. البته سعی کن خودت انجام بدی، به مشکل برخوردی سرچ کن.
خیلی از سوالات غیرمعمول و نادر هم میبینی چقدر تو فضای اینترنت در موردش بحث شده ( البته به زبان انگلیسی، باید دور فارسی رو تو این مورد خط بکشی )
مثلا همینو سرچ کردم اینجا خیلی تر و تمیز نوشتن : http://stackoverflow.com/questions/5585779/how-to-convert-string-to-int-in-java
و البته برای خیلی از متد ها بین جاوا و c++ و C# تفاوتی نیست و in java زیاد مهم نیست. جالب اینه واسه همین متد که من دقت نکردم، برای اعداد منفی هم تنها با یک if میتونی پوشش بدی.