gpt4 book ai didi

java - 我的代码中的 NumberFormatException

转载 作者:行者123 更新时间:2023-12-02 06:04:34 26 4
gpt4 key购买 nike

我正在解决亚马逊 Interview Street 网站上的 Connected Sets 问题 https://amazon.interviewstreet.com/challenges我的代码对于网站提供的公共(public)示例测试用例完美运行,但我在第 25 行的隐藏测试用例中遇到了 NumberFormatException。这是我的代码中解析输入的部分:

 public class Solution
{
static int [][] arr;
static int num = 2;
static int N;
static String output = "";
public static void main(String[] args) throws IOException
{
int T;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(reader.readLine());
int i, j, k;

for(i=0;i<T;i++) //the loop for each of the 'T' test cases
{
N = Integer.parseInt(reader.readLine()); //line 25
arr = new int[N][N];

for(j=0;j<N;j++) //the loops for storing the input 2D array
{
for(k=0;k<N;k++)
{
arr[j][k] = Character.getNumericValue(reader.read());
reader.read();
}
}

我花了很多时间试图找出问题所在,但一直没有成功。感谢您提前提供的帮助。

编辑:网站上的问题陈述如下:

给定一个二维矩阵,其中只有 1 和 0。求该矩阵中连通集的总数。

说明:连接集可以定义为一组小区,其中提到了 1,并且该组中至少有一个其他小区与它们共享邻居关系。一个单元格中有 1 并且周围没有邻居有 1 可以被认为是一个单元格在其中的集合。邻居可以定义为在 8 个可能的方向(即 N、W、E、S、NE、NW、SE、SW 方向)上与给定小区相邻的所有小区。细胞不是其自身的邻居。

输入格式:输入的第一行包含 T,测试用例的数量。然后遵循 T 测试用例。每个测试用例都有给定的格式。N [代表矩阵 N X N 的维度]。接下来是N行,每行有N个数字。

输出格式:对于每个测试用例打印一行,它具有的连接组件的数量。

示例输入:

4

4

0 0 1 0

1 0 1 0

0 1 0 0

1 1 1 1

4

1 0 0 1

0 0 0 0

0 1 1 0

1 0 0 1

5

1 0 0 1 1

0 0 1 0 0

0 0 0 0 0

1 1 1 1 1

0 0 0 0 0

8

0 0 1 0 0 1 0 0

1 0 0 0 0 0 0 1

0 0 1 0 0 1 0 1

0 1 0 0 0 1 0 0

1 0 0 0 0 0 0 0

0 0 1 1 0 1 1 0

1 0 1 1 0 1 1 0

0 0 0 0 0 0 0 0

示例输出:

1

3

3

9

约束:

0

0

请注意,上述示例测试用例适用于我的代码。隐藏的测试用例给出了异常(exception)。

最佳答案

好的,所以我修改了我的程序以纳入LeosLiterak使用trim()的建议,新代码如下:

public class Solution
{
static int [][] arr;
static int num = 2;
static int N;
static String output = "";
public static void main(String[] args) throws IOException
{
int T;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(reader.readLine().trim());
int i, j, k;

for(i=0;i<T;i++)
{
N = Integer.parseInt(reader.readLine().trim());
arr = new int[N][N];

for(j=0;j<N;j++)
{
String [] temp = reader.readLine().trim().split(" ");
for(k=0;k<N;k++)
{
arr[j][k] = Integer.parseInt(temp[k]);
}
}

因此,我现在不再读取输入矩阵中的每个字符并将其转换为整数并存储,而是读取整行并修剪和分割字符串,然后将每个子字符串转换为整数并存储在数组中。

关于java - 我的代码中的 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com