Не удается сохранить данные в ArrayLists? - PullRequest
0 голосов
/ 09 декабря 2011

спасибо за помощь, ребята, но теперь характер вопроса изменился с помощью предложенного Патриком цикла ниже, но похоже, что он не сохраняет входные данные для соответствующих массивов, данные продолжают заменяться в ArrayLists вместо того, чтобы идти следующая позиция в ArrayList какие-либо предложения?

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

        ArrayList<String> names;
        ArrayList<String> addr;


        do {
            names = new ArrayList<String>();
            addr = new ArrayList<String>();
            Scanner userInput = new Scanner(System.in);
            System.out.println("Name and Adreess are: " + names.size() + "**"
                    + addr.size());
            System.out.println("please Enter Your Name :");
            names.add(userInput.next());
            System.out.println("please enter your Address  :");
            addr.add(userInput.next());

            System.out.println("Do you want to add another entry? :(y/n)" );
            String ans =userInput.next();  // get the value from the user using scanner class
            if(ans.equals("n") || ans.equals("N"))
                break;

        } while (true);
        int n = names.size();
        int a = addr.size();
        for(int i =0; i<n && i<a; i++ )
            System.out.println("Name and address are as below:  "+ names.get(i)+"**"+ addr.get(i));




    }

}

Ответы [ 5 ]

1 голос
/ 09 декабря 2011

Используйте while(true) в сочетании с оператором останова :

do {
    if(input.next() == 'n'){
        break;
    }
} while(true);
0 голосов
/ 31 мая 2013

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

публичный класс Array {

public static void main(String[] args) {

    ArrayList<String> name = new ArrayList<String>();
    ArrayList<Integer> phone = new ArrayList<Integer>();
    Scanner scanner = new Scanner(System.in);
    String answer = "";
    do {
        System.out.println("Please enter your name: ");
        name.add(scanner.next());
        System.out.println("Please enter your number: ");
        phone.add(scanner.nextInt());
        System.out.println("Do you want to add a directory y/n?");
        answer = scanner.next();
    } while (answer.equals("y") || answer.equals("Y"));
    if (answer.equals("y") || answer.equals("Y")); //want it to go back to start another direcotry here
    else {
        System.out.println("Thanks for adding to the directory");
        for (int i = 0; i < name.size(); i++) {
            System.out.print(name.get(i) + "\t");
            System.out.print(phone.get(i));
            System.out.println("");
        }
    }
}

}

0 голосов
/ 09 декабря 2011

Вы должны сделать что-то вроде этого:

String choice = "";
do {
    .
    .
    .
    .
    System.out.println("Do you want to add another entry? :(y/n)" );
    choice = userInput.next();
} while (!(choice.equals("n") || choice.equals("N")));

Строка

choice = userInput.next();

будет читать ввод пользователя, а метод String classes equals для сравнения ввода,Цикл будет продолжаться до тех пор, пока не будет выбрано N или n.

0 голосов
/ 09 декабря 2011

получить значение от пользователя, и если пользователь введет n, в противном случае ничего не сломается

System.out.println("Do you want to add another entry? :(y/n)" );
String ans = .... // get the value from the user using scanner class
if(ans.equalsIgnoreCase("n"))
     break;
0 голосов
/ 09 декабря 2011

Попробуйте захватить ввод этого пользователя

System.out.println("Do you want to add another entry? :(y/n)");

и используйте эту информацию в то время.

...