2016-06-02 4 views
-1

Мне любопытно, есть ли способ, использующий класс сканера, чтобы получить пользовательский ввод для инициализации строк и количеств в массиве.Двумерные массивы и пользовательский ввод

например, если у вас есть три по три массива, и вы хотите, чтобы пользователь, чтобы выбрать, какую строку и Колум, чтобы перейти к

что-то вроде:

Scanner input = new Scanner(System.in); 

int[][] arrayOfChoice = new int[][]; 

int user = arrayOfChoice[input.nextInt()][input.nextInt] = some value 

Я не пробовал это, но я сомневаюсь, что это работает, но надеюсь, что это дает представление о том, что я ищу, и если есть способ достичь этого, я был бы очень благодарен за это.

EDIT

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

import java.util.Scanner; 
import java.util.Arrays; 

public class ScannerTest 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

     int[][] arrayHu = new int[3][3]; 

     System.out.println("please enter the row and colum you would like to fill:"); 

     int[input.nextInt();][input.nextInt();] = 1; 

     System.out.println(Arrays.toString(arrayhu)); 
    } 
} 

что-то вроде этого, где пользователь может ввести какой строке и Колум поставить значение 1 в., Как бы я сделайте это, спасибо

+3

Почему вы не попробовали это? Почему вы сомневаетесь, что это работает? Что ты тогда пробовал? – Orin

ответ

0

Да, вы можете сделать это, но только в заявлении об улове try. Последняя строка Вы писали также неправильно

int user = arrayOfChoice[input.nextInt()][input.nextInt()] = some_value 

some_value будет назначен как массив и пользователь

0

Это делает работу, но есть немного проблема с вашим кодом. Нижеследующая строка

int[][] arrayOfChoice = new int[][]; 

не будет работать, потому что вам нужно либо инициализировать массив, либо дать ему размеры.

int[][] arrayOfChoice = new int[3][3]; 
int[][] arrayOfChoice = new int[][]{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; 

Кроме того, для последней строки:

int user = arrayOfChoice[input.nextInt()][input.nextInt] = some value 

И переменная пользователя и индекс на входе две точки пользователь будет равен «некоторого значения». Я не уверен, что это то, чего вы пытаетесь достичь или нет.

Также я хотел бы предупредить, что вход пользователя может быть недействительным (не числовым, вне границ массива и т. Д.), Что приведет к сбою программы. Возможно, используйте блок catch try (так как это означает, что пользователь будет определен только внутри блока catch try, я переместил его за пределы).

int user = 5; 
try 
{ 
    arrayOfChoice[input.nextInt()][input.nextInt()] = user; 
} 
catch(Exception e) 
{ 
    System.out.println("Invalid input!"); 
} 

Редактирует для крестики нолики игры:

Все, что я сказал до сих пор применяется. Есть много способов сделать это, но вот пример.

1.Создайте счетчик поворота, сканер и панель.

int turn = 0; 
int[][] board = new int[3][3]; 
Scanner input = new Scanner(System.in); 

2.Create в то время как цикл, который печатает доску и запрашивает у пользователя ввода:

for(int[] i : board) 
{ 
    for(int j : i) 
    { 
     System.out.print(j + " "); 
    } 
    System.out.println(); 
} 
System.out.println("Enter an x and y value:"); 

3.Получить информацию от пользователя: функция

board[input.nextInt()][input.nextInt()] = ((turn % 2) == 0 ? 2 : 1); 

4.Create проверить плату за победу и выйти из цикла, если найден. Половина может быть написана ниже, но диагональ также должна быть проверена.

/*Check row and column.*/ 
for(int i = 0; i < 3; i++) 
{ 
    if((board[i][0] == board[i][1] && board[i][0] == board[i][2] && board[i][0] != 0) || 
     (board[0][i] == board[1][i] && board[0][i] == board[2][i] && board[0][i] != 0)) 
    { 
     return true; 
    } 
} 

5.Если победитель не найден, увеличите счетчик оборотов и начните цикл. Если выиграл победитель

System.out.println("Player " + ((turn % 2) == 0 ? 2 : 1) + " is the winner!"); 

6.Закрыть сканер.

input.close(); 
+0

ok Я вижу, что вы говорите, позвольте мне рассказать немного подробнее о том, что я пытаюсь сделать. Я делаю от консула игру с тик-таковым. поэтому я хочу, чтобы пользователь выбрал соответствующую строку и colum, а затем там, где x или o будут отмечены в остальной части моего кода, так что, например, у больного есть системный отпечаток, который говорит, что выбирает строку и colum и это был бы связанный массив для хранения информации о том, что информация [0] [2] означала бы х в третьем поле – pawsome

Смежные вопросы