2015-10-22 2 views
0

Хотя мой код кажется очень маленьким и простым, но он не выбрасывает исключение такого элемента. Вопрос заключается в том, что мы берем матрицу целых чисел, и мы должны проверить, есть ли элементы, вокруг которых все элементы меньше этого элемента. И мы должны заменить этот элемент на «X». Нет необходимости проверять элементы границы ... На самом деле я новичок в java ... поэтому любые исправления приветствуются!Нет такого исключения элемента для матрицы целых чисел?

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 
    int n= in.nextInt(); 
    int a[][] = new int[n][n]; 
    for(int i=0;i<n;i++) //getting input from user 
     { 
     for(int j=0;j<n;j++) 
      { 
      a[i][j] = in.nextInt(); 
     } 
    } 
    for(int i=0;i<n;i++) // checking the condition 
     { 
     for(int j=0;j<n;j++) 
      { 
      if(i!=0 && i!=n-1 && j!=0 && j!=n-1) 
       { 
       if(a[i-1][j]<a[i][j] && a[i+1][j]<a[i][j] && a[i][j-1]<a[i][j] && a[i][j+1]<a[i][j]) 
        { 
        System.out.println("X "); 
       } 
       else 
        { 
        System.out.println(a[i][j]+" "); 
       } 

      } 
     } 
     System.out.println(); 
    } 
} 
} 

input:   output: 
4     
1112    1112  
1912    1X12 
1892    18X2 
1234    1234 

ответ

0

Ваш, если условие if(i!=0 && i!=n-1 && j!=0 && j!=n-1) должно быть изменено на ...

if(i>0 && i<n-1 && j>0 && j<n-1) 

и вам будет хорошо. Попробуйте решить, что индекс массивов не превышает предел, который в этом случае возникает, когда вызывается a[i+1][j]<a[i][j] или a[i][j+1]<a[i][j].

+0

исключение на восемнадцатом линии ... то есть на [I] [j] = in.nextInt() – harry

0

Вот еще один раствор StringBuilder без трудных испытаний:

public class Solution { 

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 
    int n= in.nextInt(); 
    System.out.println("How many numbers do you want to test?"); 
    int x = in.nextInt(); 
    in.nextLine(); 
    StringBuilder sb = new StringBuilder(); 

    for (int i = 0 ; i < x ; i++){ 
     sb.append(in.nextLine()).append(" "); 
    } 

    for (int i = 0 ; i < sb.toString().length() ; i++){ 
     if (Character.getNumericValue(sb.toString().charAt(i)) > n){ 
      sb.replace(i, i+1, "X"); 
     } 
    } 

    System.out.println(sb.toString()); 

    } 
} 

Выход

5 
How many numbers do you want to test? 
2 
123456789 
999555444 
12345XXXX XXX555444 
Смежные вопросы