java控制输入int_Java:在控制台中输入String输入并解析为Int

以下是要求..

输入:第一行输入将由数字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

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)方法.此方法将返回相关char变量的int值.所以你的代码应该是这样的

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

这将解决您的问题.我测试了它,它提供了所需的输出.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值