整数矩阵没有这样的元素异常?

时间:2015-10-22 16:18:25

标签: java exception java.util.scanner

虽然我的代码看起来非常小而且很简单,但它抛出了No Such元素异常。问题是我们采用整数矩阵,我们应该检查是否存在所有元素都小于该元素的元素。我们必须用'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   

2 个答案:

答案 0 :(得分:0)

您的if条件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]时会发生这种情况。

答案 1 :(得分: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