Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决Java中的NumberFormatException? import java.util.*; 导入java.lang.*; 导入java.io.*; 班长{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ BufferedReader红色=新的BufferedReader(新的InputStreamReader(System.in)); 字符串s=red.readLine(); int t=0; int l=0; int c=0; t=Integer.valueOf(red.readLine()); for(int i=0;i_Java_Numberformatexception - Fatal编程技术网

如何解决Java中的NumberFormatException? import java.util.*; 导入java.lang.*; 导入java.io.*; 班长{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ BufferedReader红色=新的BufferedReader(新的InputStreamReader(System.in)); 字符串s=red.readLine(); int t=0; int l=0; int c=0; t=Integer.valueOf(red.readLine()); for(int i=0;i

如何解决Java中的NumberFormatException? import java.util.*; 导入java.lang.*; 导入java.io.*; 班长{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ BufferedReader红色=新的BufferedReader(新的InputStreamReader(System.in)); 字符串s=red.readLine(); int t=0; int l=0; int c=0; t=Integer.valueOf(red.readLine()); for(int i=0;i,java,numberformatexception,Java,Numberformatexception,我想你想要这个: import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { try { BufferedReader red = new BufferedReader(new InputStreamReader(System.in));

我想你想要这个:

import java.util.*;
import java.lang.*;
import java.io.*;

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

            BufferedReader red = new BufferedReader(new InputStreamReader(System.in));
            String s = red.readLine();
            int t = 0;
            int l = 0;
            int c = 0;
            t = Integer.valueOf(red.readLine());
            for (int i = 0; i < t; i++) {
                l = Integer.valueOf(red.readLine());
                c = Integer.valueOf(red.readLine());
                for (int j = 1; j <= l; j++) {
                    for (int k = 1; k <= c; k++) {
                        if (j == 1 || j == l || k == 1 || k == c) {
                            System.out.print("*");
                        } else {
                            System.out.print(".");
                        }
                    }
                    System.out.println();
                }
            }
            l = 0;
            c = 0;
            t = 0;

            red.close();

        } catch (NumberFormatException e) {
            System.out.println(e);
        }
    }
}
如果当前输入行为
“3 1”
,则将分配
l
c
1


请注意,尽管此代码可能有效,但它很脆弱;您可能希望添加代码以防止坏数据。

您可以在输入行上使用类似String.split的函数,根据分隔符(此处为空格)进行剪切:

另一个有用的方法是String.trim()从字符串的开头和结尾删除Black字符

String line = red.readLine();
String[] items = line.split("\\s");

另一点是,您只能围绕Integer.parseInt()调用编写try/catch块,而不是围绕整个循环:
这样,您将根据出错行发生错误,而不会停止整个进程。但这是关于您的错误处理:如果输入仅包含一个“坏字符”(即:“a”),您是要停止出错的整个进程,还是只记录一条消息并继续。

作为旁白,
Integer.valueOf(String)
返回一个新的
整数
。您想使用
Integer.parseInt(String)
。我们需要查看您正在读取的文件。问题是文件中3和1之间的空格。另外,这发生在哪一行?因为这将帮助您知道文件中哪一行有空格。定义“resolve”。如果您读取的行不是有效整数(并且
31
不是有效整数),您希望发生什么?给定的输入是l和c,由空格分隔。我认为由于这个空格,无法将l和c的读数作为整数。
String line = red.readLine();
String[] items = line.split("\\s");
String line = "  test  ";
line = line.trim(); // "test"