Java:在控制台中获取字符串输入并解析为Int

Java:在控制台中获取字符串输入并解析为Int,java,string,type-conversion,Java,String,Type Conversion,以下是要求 输入:第一行输入由数字N组成,即9*9矩阵的数字。接下来的N*9行将包含指定格式的拼图 输出:一个数字,它是所有给定拼图主对角线上所有数字的总和 以下是我编写的代码:(逻辑正确吗?为什么不生成所需的输出?) import java.util.Scanner; 把他们的名字归类{ 公共静态void main(字符串参数[]){ 扫描仪sc=新的扫描仪(System.in); int n=sc.nextInt(); 整数a[][]]=新整数[n][9][9]; int arr[][]=新

以下是要求

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

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

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

import java.util.Scanner;
把他们的名字归类{
公共静态void main(字符串参数[]){
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
整数a[][]]=新整数[n][9][9];
int arr[][]=新int[10][9];
整数和=0;
行内字符串[][]=新字符串[n][9];

对于(int k=0;k使用substring(j,j+1);而不是charAt(j);您可以简单地将其键入int

charAt方法返回字符值,而Integer.parseInt()接受字符串参数。您可以将substring方法用作varName[i][k]。substring(j,j+1)其中j是数字的索引。

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

a[k][i][j] = inpline[k][i].charAt(j);
我不确定,但我认为这将把与引用字符值相关的ASCII值放入int数组。这将给您一个意外的答案。
您可以通过使用其中一个答案中描述的substring()方法并将结果字符串解析为int来修复此问题,也可以使用Character.getNumericValue(Char ch)方法。此方法将返回相关Char变量的int值。因此,代码的

a[k][i][j] = Character.getNumericValue(inpline[k][i].charAt(j));
这将解决您的问题。我对此进行了测试,它提供了所需的输出


有关更多详细信息,请参阅Java API文档。

如果它显示错误,则它是不正确的(除非其目的是显示错误)…对于我的错误,很抱歉,已修复它。
a[k][i][j] = Character.getNumericValue(inpline[k][i].charAt(j));