-1

ねえ、私はユーザーから1つずつ入力を取得しようとしていますが、間違った入力を取得しているようです...実際には、ユーザーから取得する1つの入力をスキップします..たとえば、以下のコードでは、最初に名前を取得してから住所を取得したい最後に連絡したのですが、そうすると名前の入力がスキップされました...

import java.util.ArrayList;
import java.util.Scanner;
public class mainClass {
    public static void main(String args[]){

        int value = 0;
        ArrayList<Data> Contacts = new ArrayList<Data>();
        Scanner input = new Scanner(System.in);
        while(true){
            System.out.println("Enter 1  to add a Contact :: Enter 2  to View all Contact");
            value = input.nextInt();

            switch(value){

            case 1:

                System.out.println("Plz enter Name : ");
                String name = input.nextLine();
                System.out.println("Plz enter Address : ");
                String address = input.nextLine();
                System.out.println("Plz enter ContactNo : ");
                String contact = input.nextLine();

                Data objt1 = new Data(name, address, contact);
                Contacts.add(objt1);

                break;
            case 2:

                System.out.println("Name\t\tContact\t\tAddress");

                for(int i=0; i<Contacts.size(); i++)
                {

                    System.out.println(Contacts.get(i));
                }

                break;
            default:
                System.out.println("Sorry wrong input");

            }



        }
    }
}

データクラスはこちら

public class Data {

        private String name = "";
        private String address = "";
        private String cell = "";


        public Data(String n, String a, String c){

            name = n;
            address = a;
            cell = c;
        }

        public String toString()
        {
            return String.format("%s\t\t%s\t\t%s", name, cell, address);
        }
}
4

1 に答える 1

0

値を取得した後に追加してみてくださいinput.nextLine();。これにより、改行文字が消費されます

value = input.nextInt();
input.nextLine();

(また)

int value = Integer.parseInt(input.nextLine());
于 2013-10-27T11:26:43.423 に答える