نمایش نتایج 1 تا 2 از 2

نام تاپیک: دلیل استفاده از ()next توی این کد؟

  1. #1

    دلیل استفاده از ()next توی این کد؟

    سلام به همگی!
    توی این متد ساده کاربر شعاع دایره وارد میکنه و محیطش براش حساب میشه.


    import java.util.Scanner;


    public class B {
    public static void circlPermeter() {
    Scanner sc = new Scanner(System.in);
    double radiuse = 0;
    boolean check = false;
    do{
    System.out.println("enter a number :");
    if(sc.hasNextDouble()){
    radiuse = sc.nextDouble();
    check = true;
    }else{
    System.out.println("wrong number ");
    check = false;
    sc.next();
    }
    }while(!check);

    System.out.println(2 * Math.PI * radiuse);
    }
    }


    حالا میخام بدونم چرا اینجا باید از ()next استفاده کرد که به کاربر اجازه بده بازم عدد وارد کنه ؟ چرا وقتی ()nextDouble میزنیم بجاش اررو میده. کلا next چه فرقی با بقیه میکنه؟


    }else{
    System.out.println("wrong number ");
    check = false;
    sc.next();
    }


    با تشکر فراوان

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: دلیل استفاده از ()next توی این کد؟

    یکی از مزایا (و گاها عیب محسوب میشه) که جاوا روی نوع داده ها (Type) خیلی سختگیره و مثل زبانهایی نیست که خودشون تشخیص بدن و انواع داده ها رو هر گاه لازم دیدن cast یا convert کنند.
    برای همین اگر شما از IDE استفاده کنید هر متدی که مینویسید خروجیش رو هم میبینید.
    اگر دقت کنید مقدار خروجی next در این کلاس (Scanner) مقدار String است. ولی nextDouble مقدار برگشتی double یا شاید Double باشه.
    وقتی شما از کیبورد میخونید هر چیزی در ابتدا String هست و در نتیجه شما به هیچ خطایی بر نمیخورید. اما اگر از nextDouble استفاده کنید فقط مجاز هستید یک عدد (صحیح یا اعشاری) وارد کنید و اگر فرمتش متفاوت باشه یا بینش حروف مثل a و... باشه خطا میگیره. چون ابتدا رشته رو میگیره و بعد به عددی از نوع double تبدیل میکنه.

    تو خطی که شما گفتید، خب شما در if گفتید اگر بعدی hasNextDouble نبود، اونوقت به صورت رشته بگیر (و البته جایی ذخیره نکن). خب شما میگید چرا nextDouble بذارم اررور میده. مسلمه وقتی چک کردید که double نبود برو تو else بعد اونجا nextDouble کنید؟

تاپیک های مشابه

  1. دلیل استفاده از final در این کد
    نوشته شده توسط passerby در بخش Android Studio
    پاسخ: 1
    آخرین پست: چهارشنبه 28 مرداد 1394, 03:54 صبح
  2. مبتدی: دلیل استفاده از این کد برای باز شدن فرم جدیذ
    نوشته شده توسط shahin60 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 21 آبان 1393, 07:28 صبح
  3. دلیل استفاده از DataBinder.Eval
    نوشته شده توسط PrinceDotNet در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 18 مهر 1384, 21:04 عصر
  4. چرا در موقع استفاده از دستور ShellExecute این پیغام میاد؟
    نوشته شده توسط فریدی در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: پنج شنبه 22 مرداد 1383, 12:06 عصر
  5. در مورد امکان استفاده از outlook در این فرم
    نوشته شده توسط linux در بخش VB.NET
    پاسخ: 3
    آخرین پست: چهارشنبه 30 مهر 1382, 18:13 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •