java 怎么输入eof_java - [考虑到缺少EOF,如何从Java的标准输入中读取? - SO中文参考 - www.soinside.com...

我正在尝试从命令行读取此输入1 2 3

4 5 6

7 8 9

但是由于它没有EOF,因此程序会抛出运行时错误。我正在循环中按以下方式阅读它:String holder = scanner.nextLine();

关于我在这里缺少什么的任何想法?

这是我正在使用的代码package com.company;

public class Main {

public static void main(String[] args) throws IOException {

Scanner scanner = new Scanner(System.in);

int numCases = scanner.nextInt();

scanner.nextLine();

for(int i = 0; i < numCases; i++) {

int matrixSize = scanner.nextInt();

String ar = scanner.nextLine();

int matrix[][] = new int[matrixSize][matrixSize];

String rowNumbers[];

for(int row = 0; row < matrixSize; row++) {

String holder = scanner.nextLine();

rowNumbers = holder.split( " ");

for(int col = 0; col < matrixSize; col++) {

matrix[row][col] = Integer.parseInt(rowNumbers[col]);

}

}

int trace = calculateMatrixTrace(matrixSize, matrix);

int repeatedInRows = countRepeatedInRows(matrixSize, matrix);

int repeatedInCols = countRepeatedInCols(matrixSize, matrix);

System.out.println("Case #" + (i + 1) + ":" + " " + trace + " " + repeatedInRows + " " + repeatedInCols);

}

}

static int calculateMatrixTrace(int matrixSize, int matrix[][]) {

int matrixTrace = 0;

for(int i = 0; i < matrixSize; i++) {

matrixTrace += matrix[i][i];

}

return matrixTrace;

}

static int countRepeatedInCols(int matrixSize, int matrix[][]) {

int repeatedInCols = 0;

List numbersInCols = new ArrayList<>();

for(int col = 0; col < matrixSize; col++) {

for(int row = 0; row < matrixSize; row++) {

int currentNumber = matrix[row][col];

if (row != 0 && numbersInCols.contains(currentNumber)) {

repeatedInCols += 1;

break;

}

numbersInCols.add(matrix[row][col]);

}

numbersInCols.clear();

}

return repeatedInCols;

}

static int countRepeatedInRows(int matrixSize, int matrix[][]) {

int repeatedInRows = 0;

List numbersInRows = new ArrayList<>();

for(int row = 0; row < matrixSize; row++) {

for(int col = 0; col < matrixSize; col++) {

int currentNumber = matrix[row][col];

if (col != 0 && numbersInRows.contains(currentNumber)) {

repeatedInRows += 1;

break;

}

numbersInRows.add(matrix[row][col]);

}

numbersInRows.clear();

}

return repeatedInRows;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示是处理multipart/form-data请求时出现了问题,具体是java.io.eofexception异常。这个异常表示在读取输入流时,已经到达了流的末尾,但是还在尝试读取数据,导致读取失败。可能是请求的数据不完整或者格式不正确导致的。需要检查请求数据的完整性和格式是否正确,或者检查代码处理请求的部分是否有问题。 ### 回答2: multipart/form-data是一种常见的表单数据格式,由于其文件上传的功能在Web开发被广泛使用。当使用Java编程语言处理multipart/form-data请求时,可能会遇到“processing of multipart/form-data request failed. java.io.eofexception”错误。 在Java,通过使用Apache Commons FileUpload库来处理表单数据。该库提供了一个FileUpload类,该类可以从HTTP请求提取并解析文件上传表单数据。 使用FileUpload类将multipart/form-data请求解析为文件,其每个文本域和文件域都可以包含一个或多个值。此外,它还提供了一个InputStream,用于读取文件上传的内容。 然而,在处理multipart/form-data请求时,如果遇到EOFException,表示程序已经读取完毕,但仍没有获得正确的数据。通常,这是由于客户端突然关闭了连接或上传过程出现了网络问题。 为了解决EOFException,在处理multipart/form-data请求时,可以添加一个try-catch块来捕获EOFException异常并处理它。另外,还可以使用检查和校验数据来确保multipart/form-data请求的完整性和正确性。 总之,处理multipart/form-data请求的过程可能会出现一些异常,而EOFException是其的一种。在处理multipart/form-data请求时,我们需要仔细检查和校验数据,并进行适当的错误处理,以确保Web应用程序的安全和稳定性。 ### 回答3: multipart/form-data 是一种常见的 HTTP 请求数据格式,在这种格式下,HTTP 请求被分成多个部分进行传输。这些部分在传输过程是以二进制的形式进行拼接的。在 Java 应用程序,我们可以使用 Servlet API 提供的 Part 接口和 MultipartConfig 注解来处理 HTTP 请求的 multipart/form-data 数据。 然而,当处理 multipart/form-data 请求时,有时会出现 “processing of multipart/form-data request failed. java.io.eofexception” 这样的异常。 其EOF 代表的是 End of File,也就是文件结束的标志。在 Java ,IOException 是常见的输入输出异常,是由于在处理 IO 流时出现错误所导致的。 在处理 multipart/form-data 请求时,通常会使用 InputStream 类的 read() 方法读取二进制数据。当请求的二进制数据被读取完毕后,InputStream 会返回 -1 作为文件结束的标志。EOFException 的出现就是因为程序试图从 InputStream 读取不存在的数据。 造成这个问题的原因可能是由于传输的 multipart/form-data 请求数据不完整或者没有读取完全,从而造成解析时出现 EOFException 异常。也有可能是单个文件或者多个文件某个文件大小过大,超出了程序可以处理的限制。 解决该问题的方法可以尝试增加可读取数据的大小,修改应用程序的配置文件,或者更改所使用的框架或 API。可以使用支持大文件传输处理的第三方框架,如Apache FileUpload和Spring MultiPart File,或者将数据上传至云存储并使用链接进行访问以避免超出应用限制的问题。 综上所述,解决 “processing of multipart/form-data request failed. java.io.eofexception” 异常的方法有多种,需要根据具体情况进行具体分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值