Java:在控制台中获取String输入并将其解析为Int - java

以下是要求。

输入:输入的第一行包含数字N,即9 * 9矩阵的数目。接下来的N * 9行将包含指定格式的拼图。

输出:单个数字,它是所有给定拼图的主要对角线上所有数字的总和。

以下是我编写的代码:(逻辑正确吗?为什么不产生所需的输出?)

import java.util.Scanner;

class TheInvitationGame{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[][][] = new int[n][9][9];
int arr[][] = new int [10][9];

int sum = 0;
String inpline[][] = new String[n][9];

for(int k=0; k<n; k++){
    for(int i=0; i<9; i++){
        inpline[k][i] = sc.next();

        for(int j=0; j<9; j++){
            a[k][i][j] = inpline[k][i].charAt(j);
            if(i==j){
                sum += a[k][i][j];      
            }   
        }
        System.out.println();
    }
}

System.out.println(sum);

}
}

在这里,我希望采用3D数组[k] [i] [j],其中k用于迭代NO。 9 * 9个输入矩阵,i =用户将输入的行(字符串格式),j =否。矩阵中也可用作charAt()变量的列数

以下是堆栈跟踪:(464输出应该为32(0 + 2 + 4 + 6 + 8 + 0 + 2 + 4 + 6)

1个
012345678

123456789

234567890

345678901

456789012

567890123

678901234

789012345

890123456

464

参考方案

这里的问题是,您将char值放入int数组中,从而导致意外行为。

a[k][i][j] = inpline[k][i].charAt(j);

我不确定,但是我认为这会将与引用char值相关的ASCII值放入您的int数组。这将为您带来意想不到的答案。
您可以通过使用答案之一中描述的substring()方法并将结果字符串解析为int来解决此问题,也可以使用Character.getNumericValue(Char ch)方法。此方法将返回relevent char变量的int值。所以你的代码应该看起来像

a[k][i][j] = Character.getNumericValue(inpline[k][i].charAt(j));

这样可以解决您的问题。我对此进行了测试,它提供了所需的输出。

请参阅Java API文档以获取更多详细信息。

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

Java string.hashcode()提供不同的值 - java

我已经在这个问题上停留了几个小时。我已经注释掉所有代码,认为这与数组超出范围有关,但是这种情况仍在发生。我正在尝试使用扫描仪从文件中读取输入,存储数据并稍后使用哈希码获取该数据。但是哈希值不断变化。public static void main(String[] args) { //only prior code is to access data char…