آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کمک در تکمیل اولین برنامه من (جدا کردن 3رقم 3رقم اعداد در محاسبه) لطفاً این سوال رو بدون جواب نذارید ...

GR  8 سال پیش  6 سال پیش
+2 0

سلام دوستان

دارم یه برنامه مبدل میسازم ( چون رسیدم به بخش 7) همه چی خوب کار میکنه. عالی

فقط یه ایراد هست!

اینه که من میخوام اعداد 3رقم 3رقم از هم جدا بشن ، هم هنگام نوشتن و هم هنگام تبدیل شدن ولی نمیشن.

مثلا توی ادیت تکست سانتی متر نوشته بشه 1،000 بعد که تبدیل میشه توی میلی متر بشه 10،000

چجوری میتونم این کارو کنم؟؟؟؟ لطفاً اگه بلدید دریغ نکنید. میخوام به امیدخدا اولین برنامم تکمیل بشه واسه ادامه کار لازمه دوسندارم الکی نا امید بشم!!!

از همچین کدی چجوری استفاده کنم:

  numFormat =newDecimalFormat("#,###,###");
		number = numFormat.format(1556789);System.out.println("3. DecimalFormat with ,: "+ number);

یا این:

String pattern = "#,###.###";
        DecimalFormat decimalFormat = new DecimalFormat(pattern);
        decimalFormat.setGroupingSize(3);
String format = decimalFormat.format(585858585);
 
تورو خدا راهنمایی کنید
 
تاپیک هارو همشون رو گشتم ولیل نتونستم به جواب برسم ( لطفا لینک ندید چون اگه میتونستم کارم راه میفتاد باهاشون)
منتظرتونم دوستان
Loading...
0 0
همتون میدونین آپلود اولین برنامه چقد روحیه میده به آدم.. پس درک کنید (8 سال پیش)
0 0
دوستان منتظرم (8 سال پیش)
+1 0
سلام ، GeekRoid عزیز من از این جمله ی شما که نوشتید : " دوستان من منتظرم " خیلی ناراحت شدم ، وظیفه ی من نیست که کد آماده در اختیار شما قرار بدم . شما باید کدی رو که به ذهنتون میرسه رو بنویسید و در انجمن قرار بدید تا نظر بچه ها رو در رابطه با کد خودتون دریافت کنید . به هر حال کدهای مورد نظر شما (نمایش سه رقم سه رقم در EditText و چاپ آن به صورت سه رقم سه رقم در TextView) در دو مرحله درج شده است . موفق باشید (8 سال پیش)
+1 0
دوست عزیز قربونت برم من که نمیتونم از رو غیب کد بزنم!!! باید از تجربیات بقیه هم استفاده کرد. در کل خیلی ممنون (8 سال پیش)
0 0
سلام. پاسخ خود را دراسنیپ موجود این لینک پیدا کنید (6 سال پیش)
 برای این سوال 7 پاسخ وجود دارد.
پاسخ به سوال 
Hajhosseini  8 سال پیش
+7 0

دوست عزیز به صورت زیر عمل کن:
اول یک کلاس بساز و نامش رو TextWatcherNumber بذار و داخلش کدهای زیر رو قرار بده:

 public class TextWatcherNumber implements TextWatcher {

    int len = 0;
    EditText editText;

    public TextWatcherNumber(EditText editText){
        this.editText = editText;
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        len = s.length();
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        String number = Card.getPureNumber(editText.getText().toString());
        String sepratedNumber = number;
        editText.removeTextChangedListener(this);
        if(number.length() > 3 && number.length()<7) {
            sepratedNumber = number.substring(0,number.length()-3) + "," + number.substring(number.length()-3,number.length());
        }else if(number.length() > 6 && number.length()<10) {
            sepratedNumber = number.substring(0,number.length()-6) + ","+number.substring(number.length()-6,number.length()-3) +"," + number.substring(number.length()-3,number.length());
        }else if(number.length() > 9 && number.length()<13) {
            sepratedNumber = number.substring(0,number.length()-9) + ","+number.substring(number.length()-9,number.length()-6) +","+number.substring(number.length()-6,number.length()-3) +"," + number.substring(number.length()-3,number.length());
        }else if(number.length() > 12 && number.length()<16) {
            sepratedNumber = number.substring(0,number.length()-12) + ","+number.substring(number.length()-12,number.length()-9) +","+number.substring(number.length()-9,number.length()-6) +","+number.substring(number.length()-6,number.length()-3) +"," + number.substring(number.length()-3,number.length());
        }
        editText.setText(sepratedNumber);
        editText.addTextChangedListener(this);
        editText.setSelection(editText.length());

    }
}

خوب حالا توی کدهای جاوا، برای ادیت تکستی که میخوای اعداد رو توش نمایش بدی کد زیر رو اضافه کن:

 edt.addTextChangedListener(new TextWatcherNumber(edt));

البته این کد خیلی قدیمیه و شما میتونید بهترش کنید.
موفق باشید
---------------------------------------------
Card یک کلاس هست که من توی برنامم ازش استفاده کرده بودم. شما متد زیر رو توی کلاستون اضافه کنید و کلمه Card رو حذف کنید:

 public static String getPureNumber(String _number){
        if(_number != null && !_number.equals("")) {
            String number;
            number = _number.replace("   ", "");
            number = number.replace("  ", "");
            number = number.replace(" ", "");
            number = number.replace(":", "");
            number = number.replace(",", "");
            number = number.replace("?", "");
            number = number.replace(".", "");
            number = number.replace("-", "");
            number = number.replace("*", "");
            return number;
        }else return "";
    }

کد بالا یک رشته به شما برمیگردونه که هیچ گونه کاراکتر اضافی نداره. یعنی شما باید اون ویرگول هایی که میذاری رو با هربار تغییر متن حذف کنی و دوباره تمام ویرگول هارو اضافه کنی. (کاراکترهای اضافی برای برنامه من بوده که شما میتونید حذفشون کنید)

0 0
خیلی ممنون. بزنیمش ببینیم چی میشه (8 سال پیش)
+1 0
دوست عزیز توی متد afterTextChanged از Card خطا میگیره باید چکارش کنم؟ (8 سال پیش)
پاسخ به سوال 
Hajhosseini  8 سال پیش
+5 0

اگر هم نمیخواید از ادیت تکست استفاده کنید و فقط میخواید اعداد رو توی تکست ویو نمایش بدید، از متد زیر استفاده کنید:

 public String sepratePrice(String price) {
        String temp = new StringBuilder(price).reverse().toString();
        ArrayList<String> parts = new ArrayList<String>();
        int c = 3;
        do {
            parts.add(temp.substring(c - 3, c));
            c += 3;
        }
        while (c < temp.length());
        parts.add(temp.substring(c - 3, temp.length()));

        String finalPrice = "";
        for (int i = 0; i < parts.size() - 1; i++)
            finalPrice += parts.get(i) + ",";

        finalPrice += parts.get(parts.size() - 1);

        return new StringBuilder(finalPrice).reverse().toString();
    }

این متد رو هم حدود 1 سال پیش نوشتم و فکر کنم بتونید تمیزترش کنید.
متاسفانه به خاطر تعهداتی که نسبت به شرکت هایی که در آنها کار میکنم دارم، نمیتونم سورس آخرین ورژن از هیچ کدی رو قرار بدم، ولی این کد کاملا درست کار میکنه و اگر صلاح دونستید، میتونید تمیزترش کنید.
پیشاپیش انتشار اولین برنامتون رو تبریک میگم دوست عزیز

+1 0
به امیدخدا. مچکرم (8 سال پیش)
پاسخ به سوال 
سهرابیان  8 سال پیش
+2 0

دریافت numberDecimal  و نمایش آن در TextView به طوری که بین هر سه عدد کاما قرار داده شود ( کدها تست شده ) :


 

سلام ، کد زیر به صورتی هست که کاربر عدد رو در EditText وارد کرده و خروجی آن بر روی TextView به صورت سه رقم سه رقم از یکدیگر مجزا می شود .

این از   Method :

 public class SimpleActivity extends Activity {

private static String decimalFormatCommafy(String inputnum) {

String[] splittednum = inputnum.split("\\.");

String decimalnum = "";

if (splittednum.length == 2) {

inputnum = splittednum[0];

decimalnum = "." + splittednum[1];

}

Double inputDouble = Double.parseDouble(inputnum);

DecimalFormat myFormatter = new DecimalFormat("###,###");

String output = myFormatter.format(inputDouble);

return output + decimalnum;
}

خب در این مرحله Method ای که نوشته ایم را فراخوانی می کنیم :

 @Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

final Button btn_conpute = (Button) findViewById(R.id.btn_compute);

final TextView txt_compute = (TextView) findViewById(R.id.txt_caption);

final EditText edt_inputenubmer = (EditText) findViewById(R.id.edt_inputenubmer);


// در اینجا من متد رو در لگتگ تست کردم
String userinpute = decimalFormatCommafy("2222222");
Log.i("LOG", "userinpute is " + userinpute);


// در این مرحله رویداد کلیک رو تعریف میکنیم
btn_conpute.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

String userinpute = edt_inputenubmer.getText().toString();

//در این مرحله متد را فراخوانی میکنیم
String resulte = decimalFormatCommafy(userinpute);

txt_compute.setText(resulte);
}
});
}

موفق باشید .

0 0
تا این مرحله عالیه ولی مرحله دوم رو که اد میکنم نمیشه. یعنی عدد وارد میکنم کانورت میزنم کرش میکنه و عدد وارد میکنم یکی یکی حذف میکنم به آخری ک میرسه کرش میکنه. چیزی وارد نمی کنم کانورت میزنم باز کرش میکنه (8 سال پیش)
0 0
اقا من مرحله 2 رو بیخیالش شدم همین کافیه.. وقتی زبان گوشی انگلیسیه همه چی خوبه ولی وقتی فارسی میشه عدد رو بد می نویسه. عکسش رو پایین گذاشتم (8 سال پیش)
پاسخ به سوال 
سهرابیان  8 سال پیش
+2 0

در هنگام وارد کردن numberdecimalدر EditText ببین هر سه رقم کاما نمایش داده شود ( کدهای زیر تست شده است ) :


ابتدا EditText ای را در بخش طراحی UI ایجاد کرده و بر روی آن دابل کلیک کرده تا وارد بخش XML مربوطه شویم و کد های زیر را وارد می نماییم :

 <EditText

android:id="@+id/edt_userinpute"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:digits="0123456789,"

android:ems="10"

android:inputType="numberDecimal" />

سپس وارد بخش کد نویسی شده و برای EditText رویداد زیر را تعریف می کنیم :

edt_userinpute.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

}


@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}


@Override
public void afterTextChanged(Editable s) {
edt_userinpute.removeTextChangedListener(this);

try {
String givenstring = s.toString();
Long longval;
if (givenstring.contains(",")) {
givenstring = givenstring.replaceAll(",", "");
}
longval = Long.parseLong(givenstring);
DecimalFormat formatter = new DecimalFormat("#,###,###");
String formattedString = formatter.format(longval);
edt_userinpute.setText(formattedString);
edt_userinpute.setSelection(edt_userinpute.getText().length());
// to place the cursor at the end of text
}
catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}

edt_userinpute.addTextChangedListener(this);

}
});

موفق باشید .

0 0
چرا عدد آخر رو میخواد حذف کنه کرش میکنه برنامه؟؟؟؟؟؟ (8 سال پیش)
0 0
وقتی عددی وارد نشود در صورت زدن دکمه کانورت برنامه کرش میکنه (8 سال پیش)
0 0
همچنین وقی عددی هم وارد شود!!!!!!!!11 (8 سال پیش)
+1 0
برای جلوگیری از crash برنامه در هنگام حذف عدد آخر در EditText ، کد بالا اصلاح شد . (8 سال پیش)
پاسخ به سوال 
سهرابیان  8 سال پیش
+1 0

جواب سوال : وقتی در EditText مقداری وارد نمی کنم و برروی دکمه میزنم برنامه crash  پیدا میکنه ، چیکار کنم ؟


 

برای جلوگیری از این Crash باید عمل  اعتبار سنجی ورودی به فیلد  رو انجام داد ، به شرح زیر : 

 btn_conpute.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

String userinpute = edt_inputenubmer.getText().toString();

// در این خط کد عمل اعتبار سنجی رو انجام دادم
// گفتم اگر مقدار ورودی به فیلد برابر با رشته ی خالی بود پیغامی رو نمایش بده
if (userinpute.equals("")) {

Toast.makeText(G.context, "No amount was received ! ", Toast.LENGTH_SHORT).show();
return ;

// در غیر اینصورت اگر کاربر مقداری رو وارد کرد عملیات نمایش رو انجام بده
} else {

String resulte = decimalFormatCommafy(userinpute);

txt_compute.setText(resulte);
}
}
});
پاسخ به سوال 
GR  8 سال پیش
0 0

دلیلش چیه؟ زبان گوشی که فارسی میشه ایجوری میشه :( . ادیت تکست اولی عدد اصلیه وقتی کانورت زده میشه میشه دومی

0 0
ینی واقعا کسی ایده ای نداشت؟ عجببب (8 سال پیش)
پاسخ به سوال 
GR  8 سال پیش
0 0

اقا من میخوام ایجوری باشه :
یه ادیت تکست از نوع نامبر دسیمال که عدد رو میگیره بعد با زدن کانورت به دابل تبدیل کنه و مثلا ضربدر 10 کنه و توی ادیت تکست دومی نشون بده. این وسط کاما ها هم گذاشته بشن همین.

 public class send_activity extends Activity {

private static String decimalFormatCommafy(String inputnum) {

String[] splittednum = inputnum.split("\\.");

String decimalnum = "";

if (splittednum.length == 2) {

inputnum = splittednum[0];

decimalnum = "." + splittednum[1];

}

Double inputDouble = Double.parseDouble(inputnum);

DecimalFormat myFormatter = new DecimalFormat("#,###,###");

String output = myFormatter.format(inputDouble);

return output + decimalnum;
}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.send_layout);

final Button btn_conpute = (Button) findViewById(R.id.btn_compute);

final EditText txt_compute = (EditText) findViewById(R.id.txt_caption);

final EditText edt_userinpute = (EditText) findViewById(R.id.edt_userinpute);

btn_conpute.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
if (edt_userinpute.getText().toString().length() > 0) {
String userinpute = edt_userinpute.getText().toString();
String resulte = decimalFormatCommafy(userinpute);
Double v = Double.parseDouble(String.valueOf(resulte));
txt_compute.setText(""+v * 10);
}
else {
Toast.makeText(send_activity.this,"Please Insert any Number",Toast.LENGTH_SHORT).show();
}
}
});
}
}
0 0
اقا کسی نیست؟ (8 سال پیش)
0 0
. (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .