2015-11-19 2 views
0

У меня возникли проблемы в нескольких областях. Во-первых, когда массив печатается на экране, «P» помещается в [0] [0] - это нормально, но он окружен «null» для любой другой ячейки. Я бы хотел, чтобы он был заполнен тире "-". Мне также нужно закодировать в бесконечном цикле, который просит пользователя вводить «вверх», «вниз», «левый», «правый» или «выходить». Этот бесконечный цикл входит в класс «Драйвер» или «Мировой» класс, и для этого работает оператор switch? Второй - строки и столбцы не суммируются и отображаются. Класс "Мир" является:Классы серверов и классы клиентов - многомерные массивы

import java.util.*; 

public class World 
{ 
    private static final String P = "P"; 
    private String[][] array; 

    public World() 
    {   
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter number of row: "); 
     int crow = input.nextInt(); 
     System.out.println("Enter number of columns: "); 
     int ccol = input.nextInt(); 
     array = new String[crow][ccol]; 
     array[0][0]=P; 
    } 

    public void displayWorld() 
    { 
     System.out.println(); 
      for(int i = 0; i < array.length; i++) 
      { 
       for (int j = 0; j < array[i].length; j++) 
       { 
        System.out.print(array[i][j] + " - "); 
       } 
       System.out.println(); 
      } 
    } 

    public void moveUp() 
    { 
     for(int i= 0; i < array.length; i++) 
     { 
      for (int j = 0; j < array[i].length; j++) 
      { 
       if ((array[i][j]) == " - ") 
       { 
        if (i < array.length - 1) 
        { 
         array[i][j] = " - "; 
         array[i - 1][j] = P; 
        } 
        return; 
       } 
      } 
     } 
    } 

    public void moveDown() 
    { 
     for(int i= 0; i < array.length; i++) 
     { 
      for (int j = 0; j < array[i].length; j++) 
      { 
       if ((array[i][j]) == " - ") 
       { 
        if (i < array.length - 1) 
        { 
         array[i][j] = " - "; 
         array[i + 1][j] = P; 
        } 
        return; 
       } 
      } 
     } 
    } 

    public void moveLeft() 
    { 
     for(int i= 0; i < array.length; i++) 
     { 
      for (int j = 0; j < array[i].length; j++) 
      { 
       if ((array[i][j]) == " - ") 
       { 
        if (i < array.length - 1) 
        { 
         array[i][j] = " - "; 
         array[i][j - 1] = P; 
        } 
        return; 
       } 
      } 
     } 

    } 

    public void moveRight() 
    { 
     for(int i= 0; i < array.length; i++) 
     { 
      for (int j = 0; j < array[i].length; j++) 
      { 
       if ((array[i][j]) == " - ") 
       { 
        if (i < array.length - 1) 
        { 
         array[i][j] = " - "; 
         array[i][j + 1] = P; 
        } 
        return; 
       } 
      } 
     } 

    } 

} 

Класс "Driver" является:

import java.util.Scanner; 
public class Driver 
{ 
    public static void main(String[] args) 
    {   
     World world=new World(); 
     world.moveUp(); 
     world.moveDown(); 
     world.moveLeft(); 
     world.moveRight(); 
     world.displayWorld(); 

    } 
} 
+1

Попробуйте разделить ваш вопрос вплоть до нескольких вопросов, каждый из которых задает только одну вещь и содержит только информацию, относящуюся к этой вещи. –

ответ

1

Вы должны инициализировать каждый элемент массива. Добавьте это к концу World конструктора:

for(int i=0;i<crow;i++){ 
     for(int j=0;j<ccol;j++){ 
      array[crow][ccol]="-"; 
     } 
    } 

Вам нужно будет добавить бесконечный цикл с просьбой для ввода в классе Driver. В бесконечном цикле вам необходимо:

  1. получить ввод
  2. Используйте переключатель заявление обнаруживаемая влево, вправо, и т.д.

Driver.java:

import java.util.Scanner; 

public class Driver { 

    public static void main(String[] args) { 
     World world = new World(); 
     Scanner s = new Scanner(System.in); 
     while (true) { 
      String input = s.nextLine(); 
      switch (input) { 
      case "up": 
       world.moveUp(); 
      case "down": 
       world.moveDown(); 
      case "left": 
       world.moveLeft(); 
      case "right": 
       world.moveRight(); 
      } 
     } 
     s.close(); 
    } 
} 
+0

Я отредактировал кодировку, как было предложено, и добавил строки, чтобы получить пользовательский ввод. Однако он не перемещает «P», потому что по какой-то причине методы не вызываются. Won; t позвольте мне вставить новый код, чтобы показать различия. –