虽然我的代码看起来非常小而且很简单,但它抛出了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
答案 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