+2 امتیاز
قبل در برنامه نویسی توسط (10 امتیاز)
ویرایش شده قبل توسط

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

import java.util.ArrayList;
import java.util.Scanner;

public class PhoneBook {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Contact> contactList = new ArrayList<>();
        int counter = 1;
        String name;
        String number;


        while (true) {
            System.out.println("Choose number (just number):");
            System.out.println("1. Add Contact");
            System.out.println("2. Show Contacts");
            System.out.println("3. Exit");
            System.out.println("*-*-*-*-*-*-*-*-*-*");
            int menu = scanner.nextInt();
            switch (menu) {
                case 1:
                    System.out.println(counter + " Contact");
                    System.out.println("Enter Contact Name :");
                    name = scanner.nextLine();
                    System.out.println("Enter Contact Number :");
                    number = scanner.nextLine();
                    contactList.add(new Contact(counter, name, number));
                    System.out.println("finish");
                    break;
                case 2:
                    for (Contact contact : contactList) {
                        System.out.println(contact);
                    }
                    break;
                case 3:
                    System.exit(0);
                    break;
                default:
                    System.out.println("ERROR.Enter Correct Number!!!!!!");

            }

        }/* while (true) {
            System.out.println(counter + " Contact ");
            System.out.println("Enter Contact Name or exit :");
            name = scanner.nextLine();
            if (name.equals("exit"))
                break;
            System.out.println("Enter Contact Number :");
            number = scanner.nextLine();
            contactList.add(new Contact(counter,name,number));
            counter++;
            System.out.println("Contact Successfully Saved ");
            System.out.println("********************");

        }
        System.out.println("1.Show PhoneBook ");
        System.out.println("2.Finish");
        int choice = scanner.nextInt();
        switch (choice) {
            case 1:
                System.out.println("Your PhoneBook : ");
             *//*  (this code is wrong)
              for (Integer counterIteration : counterList) {
                    for (String nameIteration : namesList) {
                        for (String numberIteration : numbersList) {
                            System.out.println(counterIteration + " " + nameIteration + " " + numberIteration);

                        }
                    }
                }*//**//*  for (int i = 0; i < namesList.size(); i++) {
                    System.out.println(counterList.get(i) + " " + namesList.get(i) + " " + numbersList.get(i));*//*
                for (Contact contact : contactList) {
                    System.out.println(contact.counter + " : " + contact.name + " " + contact.number);
                }
                System.out.println("------------------------");
                System.out.println("Finish");
                break;

            case 2:
                System.out.println("Contacts Successfully Saved ");

            default:
                System.out.println("Your Input Is Incorrect. \n" +
                        "Please Enter The Correct Option ");
        }
*/
    }
}

1 پاسخ

+1 امتیاز
قبل توسط (347 امتیاز)
ویرایش شده قبل توسط

توی خط ۱۹ زمانی که داری از کاربر یکی از اعداد ۱−۲−۳ رو میگیری وقتی کاربر عدد رو وارد میکنه بعدش enter میزنه که باعث میشه یه new line ایجاد بشه.ولی متد nextInt فقط قسمت عددی رو میگیره و کاراکتر خط جدید (n\) توی بافر ورودی میمونه و توی خط ۲۴ موقعی که انتظار داری ازت اسمو بگیره scanner یه new line میبینه و فک میکنه همون ورودیه و میره خط بعدی.

برای اینکه حلش کنی باید این new line رو رد کنی ولی هوشمندانه بشکلی که ورودی خالی بشه یعنی دقیقا بعد از هر nextInt اینو بنویسی

scanner.nextLine();
قبل توسط (10 امتیاز)
مرسی خیلی عالی توضیح دادی

سوالات مشابه

+1 امتیاز
1 پاسخ 747 بازدید
0 امتیاز
1 پاسخ 485 بازدید
0 امتیاز
2 پاسخ 473 بازدید
+1 امتیاز
1 پاسخ 499 بازدید
0 امتیاز
1 پاسخ 725 بازدید
+1 امتیاز
1 پاسخ 4.4هزار بازدید
...