Как изменить и отобразить только один столбец (через пользовательский ввод) в 2D массиве Java - PullRequest
0 голосов
/ 09 мая 2019

Я создаю игровое поле.Мне нужно, чтобы показать выбранный столбец после ввода пользователя, в то время как остальные столбцы все еще печатаются как «X».Эта игра содержит значения, которые я установил в каждом столбце, но не выводит их на экран.Когда пользователь выбирает столбец, мне нужно его напечатать, показывая значение, которое содержит этот столбец, в то время как остальные столбцы все еще печатают «X», поэтому они не показывают, что у них есть.Я новичок в этом, спасибо за вашу помощь.


Это функция, в которой, я думаю, проблема.Если вы посмотрите, вы увидите, что у меня есть оператор if "if (isCovered) - тогда я хочу, чтобы он напечатал покрытую версию. Затем" else "- где я хочу, чтобы он напечатал только ту, которая была угадана какего реальное значение. Я пробовал несколько способов добиться этого без удачи. Есть ли способ сделать его похожим (! isCovered)? Но это не работает, потому что он заявляет, что он должен быть массивом и функцией "!"не работает. Сейчас просто кажется, что он вообще не печатает оператор" else ". У меня есть функции, которые принимают пользовательский ввод и сравнивают его с" isCovered ", и они работают правильно, потому что фигура перемещается на доске какЯ просто не могу заставить его напечатать фактическое значение вместо «X». Спасибо за любую помощь, и если будет полезна дополнительная информация, пожалуйста, дайте мне знать. Это связано сегодня, к сожалению, у меня было всего несколько дней, чтобыработать над этим и постоянно работаем над этим.


public static void PrintRevealBoard(int[][] myArray,Boolean[][] isCovered) 
{
    int i, j;
    for (i = 0; i<myArray.length ; i++ ) { // array.length = max rows
        System.out.print((i+1) + " ");
        for(j = 0; j <myArray[0].length; j++) { // array[0].length = max 
        cols
        if(isCovered[i][j]){
        System.out.print(GetRollColorCovered(myArray[i][j]) + " ");
         } else {
        System.out.print(GetRollColor(myArray[i][j]) + " ");
         }
       }

1 Ответ

0 голосов
/ 09 мая 2019

ваш основной модуль немного грязный. И я не знаю, как работает GetRollColor (кости). В любом случае, насколько я понимаю, у вас есть двумерный массив, и вы хотите показать только определенное значение. Похоже, вы хотите показать весь входной столбец. используйте это для обновления isRevealed () после ввода inputCol.

public static Boolean[][] updateRevealed(Boolean[][] isRevealed, int inputCol){                                           
   for(int i=0;i<isRevealed[inputCol].length;i++)
     isRevealed[inputCol][i] = true;
   return isRevealed;
}

обновить, как это,

isRevealed = updateRevealed(isRevealed,inputCol);

ваш printRevealBoard почти правильный. Просто удалите первую строку. Это не имеет смысла, и вы не хотите этого, как я вижу

int isRevealed = inputCol;

Я не знаю, как выглядит ваш массив. Но из-за первого цикла for вы определенно получите

исключение индекса вне границ

цикл работает, пока я не стану myarray.length. и в следующем цикле вы получаете доступ к индексу I myArray. Исключение будет сгенерировано, если я = myArray.length. ты должен это исправить. Если возникнет какая-либо проблема, позвольте мне знать. спасибо

редактирование: попробуйте это для printRevealBoard

    public static void printRevealBoard(char[][] myarray , Boolean[]   []isRevealed){
     for(int i=0;i<myarray.length;i++){
        for(int j=0;j<myarray[0].length;j++){
           if (isRevealed[i][j]) System.out.print(myArray[i][j] + " ");
              else System.out.print("* ");
        }
         System.out.println();
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...