【问题标题】:Java type cast issues in input buffer输入缓冲区中的 Java 类型转换问题
【发布时间】:2018-01-11 21:36:28
【问题描述】:

我有一个读取输入流的代码..但是当我将字符转换为整数时,我收到一个错误

" 方法 Integer.parseInt(String,int) 不适用 (实际参数列表和形式参数列表的长度不同) 方法 Integer.parseInt(String) 不适用 (参数不匹配;int不能转换为String)“..这是代码

import java.util.*;
import java.io.BufferedReader;
import java.io.*;

class Abc{

    public static void main(String[] args){ 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int age = Integer.parseInt(br.read());
        String s = br.readLine();
        System.out.println(s);
        System.out.println(age); }
} 

【问题讨论】:

  • 你输入的格式是什么?
  • 先生输入是一个整数,后跟一个字符串。我还怀疑,虽然 inputstreamreader 逐个字符读取输入,但 readLine 读取整个字符串并且看起来类似于scanner.nextLine,它使用分隔符将其分解为标记格式..那么字符串和字符流如何具有相同的字符?就像我做 Integer.parseInt((sc.nextLine()) & Integer.parseInt((br.readLine()) 时一样,尽管 br 将输入分解为字符,而扫描仪使用分隔符将其分解为标记,但两者都会产生相同的结果。?

标签: java bufferedreader


【解决方案1】:

因为br.read() 已经返回一个 int,所以不能将它强制转换为 int。

另外,当你运行你的程序时,你会得到奇怪的输出并且你不能输入String s 的值。以下代码使用int age = Integer.parseInt(br.readLine());而不是int age = br.readLine(),问题已修复。

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

class Abc
{
    public static void main(String[] args) throws IOException
    { 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int age = Integer.parseInt(br.readLine());
        String s = br.readLine();
        System.out.println(s);
        System.out.println(age);
    }
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多