如何使用Java

时间:2018-08-01 17:09:32

标签: java bufferedreader

这是我的代码:

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
        String s = b.readLine();
        for (int i = 0; i < s.length(); i++)
        {
            if (i % 2 == 0) {
                int a = Integer.parseInt(String.valueOf(s.charAt(i)));
                System.out.print(a);
            }
        }
    }
}

此代码对于一位数整数很好用,但是如果输入为两位数,那么它就会混乱。

我的输入:1 3 6 5 7 输出:1 3 6 5 7 效果很好 但, 如果输入为:1 3 66 58 7 输出:发生异常。 如何处理这样的两位数整数输入。

2 个答案:

答案 0 :(得分:1)

只需尝试解析使用readLine()获得的整行:

String s = b.readLine();
int a = Integer.parseInt(s);

如果该字符串不是数字,则会获得异常。

答案 1 :(得分:1)

"my input: 1 3 6 5 7 output: 1 3 6 5 7 works well but, 
if the input is : 1 3 66 58 7 output: exception occurs. 
how to handle such double digit integer inputs."

基于此,目前还不清楚您要完成什么。您遇到的异常是由于您的if (i % 2)。当您输入1 3 66 58 7时,您的代码将处理1,跳过空格,处理3,跳过空格,处理6而不是66,跳过第二个6,然后处理空格,这就是您的异常发生的时间。

您的示例代码表明您只是在尝试将每个数字字符串(用空格分隔)转换为整数。

一种实现此目的的方法是使用String.split()将输入按空格分开,然后尝试转换每段。

类似的东西:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class StackOverflow {
    public static void main(String[] args) throws Exception {
        BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
        String s = b.readLine();
        String[] pieces = s.split(" ");

        for (int i = 0; i < pieces.length; i++) {
            try {
                int a = Integer.parseInt(pieces[i]);
                System.out.print(a + " ");
            } catch (Exception e) {
                System.out.printf("%s is not an integer\r\n", pieces[i]);
            }
        }
    }
}

结果:

1 3 66 58 7 // Input
1 3 66 58 7 // Output