2015-10-22 10 views
0

雖然我的代碼看起來很小很簡單,但是它拋出了No這樣的元素異常。問題是我們需要一個整數矩陣,我們應該檢查是否有所有元素都小於該元素的元素。我們必須用'X'替換那個元素。不需要檢查邊界元素...其實我是新來的java ...所以任何更正都是讚賞!整數矩陣沒有這樣的Element異常嗎?

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