Имате проблеми с масиви (включващи множество входове от потребителя)?

int number = keyboard.nextInt();
String [][] myArray = new String[number][1]
for (int i = 0; i < x; i++)
{   
    System.out.println("Enter food name: ");
    myArray[i][0] = keyboard.nextLine();

    for (int j = 0; j < 1; j++)
    {   
    System.out.println("Enter the type of this food: ");
    myArray[i][j] = keyboard.nextLine();
    }
}

Ето моя код за това, което ще попитам. Искам да отпечата тези резултати, когато стартирам тази програма:

Enter food name:
(where user type his or her input)
Enter the type of this food:
(where user type his or her input)

(My problem is it prints out this instead for the first loop:)
Enter food name:
Enter the type of this food:
(where user type his or her input)

Без възможност за влизане в хранителния артикул. След първия цикъл програмата се връща към нормалното с изхода, който искам, но как да променя кода, така че първият цикъл да приеме въвеждане от потребителя за „въведете име на храна:“?

Благодаря предварително.

Редактиране: съжалявам, че не видях този въпрос предварително, но този не е за for цикъл, така че ако въведа празен низ преди следващото въвеждане, моят цикъл няма да работи. Има ли някакво решение за това?

Редактиране: Заработи. Благодаря на всички.


person user3503794    schedule 06.04.2014    source източник
comment
възможен дубликат на Пропускане на nextLine() след използване на nextInt()   -  person cheseaux    schedule 06.04.2014
comment
съжалявам, че не го видях по-рано. има ли някаква корекция за зацикляне? по същия начин ли е като отговора на този въпрос?   -  person user3503794    schedule 06.04.2014
comment
Просто напишете keyboard.nextLine(); след реда int number = keyboard.nextInt(); и ще сте готови.   -  person Aman Agnihotri    schedule 06.04.2014
comment
добре, ще го пробвам. Благодаря ти   -  person user3503794    schedule 06.04.2014
comment
Благодаря ви отново, Аман Агнихотри. Работи xD. Ако искате, можете да поставите това като отговор на този въпрос и аз ще го избера като най-добър.   -  person user3503794    schedule 06.04.2014


Отговори (1)


Може да опитате нещо като кода по-долу (това позволява да се въвежда информация, докато потребителят въведе край .. вместо да изисква потребителят да знае колко елемента ще въведе. Освен това се създава метод за обработка на въвеждането .. така че вие може да се подобри, коригира метода лесно.

import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.Scanner;

public class Foodarray {

private static String[][] foodInformation;

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner keyboard = new Scanner(System.in);
    foodInformation = getFoodInformation(keyboard);

}

private static String[][] getFoodInformation(Scanner inputDevice) {
    String[][] result = null;
    boolean isStoping = false;
    ArrayList<String> holdName = new ArrayList<String>();
    ArrayList<String> holdType = new ArrayList<String>();

    while (!isStoping) {
        System.out.println("Enter food name (or end to exit): ");
        String foodName = inputDevice.nextLine().trim();
        isStoping = "end".equalsIgnoreCase(foodName);
        if (!isStoping) {
            System.out.println("Enter food type");
            String foodType = inputDevice.nextLine().trim();
            holdName.add(foodName);
            holdType.add(foodType);
        }
    }
    int foodCount = holdName.size();
    if (foodCount>0) {
        result = new String[foodCount][foodCount];
        for (int i=0; i < foodCount; i++) {
            result[i][0] = holdName.get(i);
            result[i][1] = holdType.get(i);
        }
    }

    return result;

}

 }
person ErstwhileIII    schedule 06.04.2014
comment
Благодаря за вашето мнение. Определено ще проверя това. - person user3503794; 06.04.2014