2016-03-11 2 views
0

В соответствии с моим кодом я прошу пользователя ввести строку. Я хочу преобразовать его в 2-мерный массив размера NXN. Хотя N может быть переменным, но на данный момент считается, что оно равно 3. Я хочу отформатировать строку, введенную пользователем, как показано ниже.Массивное представление матрицы в Java

Для ввода строки:

⌐Φ┼╨¡¬╨┴╨ 

Я хочу, чтобы организовать как таким образом.

[⌐ Φ ┼ 
╨ ¡ ¬ 
╨ ┴ ╨] 

Ниже приведен код.

public static void main(String[] args) { 

     Map<Character,Character> inputMap = new HashMap<Character,Character>(); 
     inputMap.put('a', '|'); 
     inputMap.put('b', 'β'); 
     inputMap.put('c', '⌐'); 
     inputMap.put('d', '≡'); 
     inputMap.put('e', '╨'); 
     inputMap.put('f', 'Ω'); 
     inputMap.put('g', '╟'); 
     inputMap.put('h', '¬'); 
     inputMap.put('i', '↔'); 
     inputMap.put('j', 'Σ'); 
     inputMap.put('k', '¥'); 
     inputMap.put('l', '╒'); 
     inputMap.put('m', '┼'); 
     inputMap.put('n', '«'); 
     inputMap.put('o', 'Φ'); 
     inputMap.put('p', '╔'); 
     inputMap.put('q', 'Є'); 
     inputMap.put('r', '┴'); 
     inputMap.put('s', 'δ'); 
     inputMap.put('t', '╬');   
     inputMap.put('u', '┤'); 
     inputMap.put('v', 'θ'); 
     inputMap.put('w', '●'); 
     inputMap.put('x', '◙'); 
     inputMap.put('y', 'σ'); 
     inputMap.put('z', '∞'); 

     inputMap.put(' ', '¡'); 

Scanner ins = new Scanner(System.in); 
     System.out.println("Enter a String"); 
     String myData = ins.nextLine(); 

     char arr[]=new char[myData.length()]; 
    arr=myData.toCharArray(); 

    for(int i = 0; i < arr.length; i++) { 

     arr[i]=inputMap.get(arr[i]); 

     System.out.println(arr[i]); 
    } 

    } 

как я могу это сделать?

+0

печати новой строки после каждых «п» элементов, может быть? Вы бы не получили квадратную матричную форму каждый раз, когда ... –

+0

Я хочу квадратную матрицу. но я не могу расположить массив к матрице –

+1

Чувак, которого вы просто хотите отобразить в матричной форме? если это так, вам не нужно менять массив на матрицу, просто напечатайте новую строку после «n» элементов, она будет отображаться как матричная форма. Вам нужно будет выполнять вычисления, чтобы каждый раз создавать квадратную матрицу. Если вам нужна матрица, подобная массиву, тогда вам нужно использовать зубчатые массивы –

ответ

0

Там есть метод в String.javatoCharArray(). Это даст вам одномерный массив. Теперь повторите его, используя простой цикл. На каждой итерации вы можете напечатать символ и на каждой N-й итерации напечатать новую строку.

public static void main(String[] args) { 
    Scanner ins = new Scanner(System.in); 
    System.out.println("Enter a String"); 
    String myData = ins.nextLine(); 
    ins.close(); 
    char [] oneDArray = myData.toCharArray(); 
    int N = 3; // or you can set it by asking the user 
    char[][] twoDArray = new char[N][N]; 
    int size = oneDArray.length; 
    boolean isEndReached = false; 
    for(int row = 0; row < N ; row++){ 
     for(int col = 0; col < N; col++){ 
      int index = row*N + col; 
      if(index >= size){ 
       isEndReached = true; 
       break; 
      } 
      twoDArray[row][col] = oneDArray[index]; 
     } 
     if(isEndReached){ 
      break; 
     } 
    } 
    //printing... 
    System.out.print("["); 
    for(int row = 0; row < N ; row++){ 
     for(int col = 0; col < N; col++){ 
      System.out.print(twoDArray[row][col]+" "); 
     } 
     System.out.println(); 
    } 
    System.out.print("]"); 
} 

Надеется, что это помогает ...

+0

Но я не могу выделить один размерный массив. iwant nxn array. как это сделать, пожалуйста, помогите с кодом –

+0

@TK Я отредактировал мой ответ и добавил код –

+0

@TK спасибо за то, что приняли ответ как правильный, но 1 вещь, которую я наблюдаю в вашем вопросе. Вам нужна карта, я имею в виду, что вы ее не используете ..... В своем ответе я ее не использовал, см. Спецификации требований и, при необходимости, используйте карту. –

0

Вы можете распечатать пустую строку в определенном интервале, например .:

String[] array = new String[10];//your map 
int n = 5; 
int count = 0; 
for(String element : array){ 
    count++; 
    System.out.print(element + " "); 
    if(count%n == 0){ 
     System.out.println(); 
    } 
} 
+0

не понимаю. Я хочу перестроить непрерывный массив в матричную форму nxn. –

+0

Отредактирован ответ. –

+0

Как я могу добавить arr [i] в ​​свою программу. пожалуйста, помогите .. я amnew в java –

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