gpt4 book ai didi

java - 当我仅输入数字时,数组输出 0000

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:25 25 4
gpt4 key购买 nike

该程序假设从文本文件中获取一行输入。

程序会从命令行获取二维数组的宽度,然后找到合适的高度,逐行输入字符,然后逐列输出进行加密。

static void loadUnloadGrid(String line, int width, int height) {
char grid[][] = new char[height][width];

// Determine number long columns
int longColumn = line.length() % width;
if (longColumn == 0)
longColumn = width;


int charCount = 0;
//
System.out.println(width);
height = height;
System.out.println(height);


//
for (int c = 0; c < height; c++) {
for (int r = 0; r < width; r++) {
if (c < height - 1 || c < longColumn) {
grid[c][r] = line.charAt(charCount);
charCount += 1;
}
}
}

// Output data from the grid by rows
System.out.printf("Grid width %d: \"", width);
for (int r = 0; r < width - 1; r++) {
for (int c = 0; c < height; c++) {
System.out.print(grid[c][r]);
}
}
// Special handling for last row
for (int c = 0; c < longColumn; c++) {
System.out.print(grid[height - 1][c]);
}

}

输入:

FRIENDSROMANSCOUNTRYMENLENDMEYOUREARSICOMETOBURYCAESARNOTTOPRAISEHIM

预期输出:

FNOSNMEERSMBCATRERDMCTENYEIEUARTAHISAORNDOACTRENOIIERNUYLMUROOYSOPSM

实际输出:

FSSREOSTCNR 0000 RRCYNUIOAOA 0000 IOOMDRCBETI 0000 EMUEMEOUSTS 0000 NANNEAMRAOE 0000 0000 0000

我的输出没有打印出完整的密码;有68个原始字符,它输出55个乱码和一堆0混合在一起。我是java新手,这是学校的类(class),我有一些其他语言的编程经验。

最佳答案

我运行了这个并得到了 StringIndexOutOfBoundsException。我实际上不确定零表示什么。您的 IDE 正在执行的操作可能很奇怪(如果您正在使用 IDE)。你应该得到异常(exception)。

异常发生在这里:

grid[c][r] = line.charAt(charCount);

您有一个检查似乎是试图防范这种情况,但它不起作用:

if (c < height - 1 || c < longColumn) {

我认为应该是r < longColumn但这并不能完全解决问题,因为任意数量的列都可以作为参数。短排不一定在height - 1 .

将检查更改为以下内容可修复异常:

if (charCount < line.length()) {

您的输出算法似乎也存在问题。基本上我认为“密码”只是一种循环反转。因此单独输出最后一行是行不通的,因为它不会交错。

以下似乎是正确的:

System.out.printf("Grid width %d: \"", width);
for (int r = 0; r < width; r++) {
for (int c = 0; c < height; c++) {
System.out.print(grid[c][r]);
}
}

System.out.println("\"");

您可以只打印整个网格,因为此时行的长度都相同。空索引将只包含不可见的空字符(UTF 代码 0)。

这样调用:

loadUnloadGrid("FRIENDSROMANSCOUNTRYMENLENDMEYOUREARSICOMETOBURYCAESARNOTTOPRAISEHIM", 4, 17);

输出为:

Grid width 4: "FNOSNMEERSMBCATRERDMCTENYEIEUARTAHISAORNDOACTRENOIIERNUYLMUROOYSOPSM"

这与您的预期相同。

关于java - 当我仅输入数字时,数组输出 0000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536350/

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