想使用下面这段代码输入一个字符进行判断是否备份,但输入‘y'后,打印出来的却不是’y'
                           BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入要备份的文件名: ");
fileName = bf.readLine();
System.out.println("要备份的文件是: " + fileName);
System.out.println("是否开始备份?(Y/N)");
char ch;
ch = bf.read();
System.out.println(ch);
请各位朋友给看看,谢谢。

解决方案 »

  1.   

    楼主使用这个试试
    Scanner s = new Scanner(System.in);
      

  2.   

    public static void main(String[] args) throws IOException {
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("请输入要备份的文件名: "); 
    String fileName;
    fileName = bf.readLine();
    System.out.println("要备份的文件是: " + fileName); 
    System.out.println("是否开始备份?(Y/N)"); 
    int ch = 0; 
    ch = bf.read();
    System.out.println((char)ch); 
    }
      

  3.   


     String ch = null; 
     ch = bf.readLine(); 
     System.out.println(ch); 
      

  4.   

    1.你并没有用System.in的read()方法,你用的是BufferedReader的read()方法。
    2.bf.readln()之后,再用bf.read()是有问题的,这两个不要连在一起用,解决的办法是,在bf.read()之前,新建立一个和上而一样的bf。也就是要重复一下BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
    3.如果你想把结果输出到文件,你还要再建立一个FileWriter或FileOutputStream.自己查一下API文档。
    4.最后不要忘了把所有的流都关闭。输出流关闭之前还要调用一下flush()方法。
      

  5.   

    System.out.println((char)ch);
    ch 是int 型 想输出Y 就得类型转换。。
      

  6.   

    代码没问题,问题的出现是因为你没有注意到bf.read(),它还回的是一个int型,也就是"Y"对应的 ASCII码,
    如果要你想程序输出是一个"Y",你可以就它返回的结果进行一个强行转换:char c = (char)bf.read();
    或者用bf.readLine()方法来读.
      

  7.   

    楼主用的JDK版本是多少啊?在1.6中下面这一句会报错的:
    int ch = 0;
    ch = bf.read(); 
    要强制转换类型,测试代码如下:import java.io.*;public class Test {
    public static void main(String[] args) {
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    try {
    System.out.println("请输入要备份的文件名: ");
    String fileName = bf.readLine();
    System.out.println("要备份的文件是: " + fileName);
    System.out.println("是否开始备份?(Y/N)");
    char ch;
    ch = (char)bf.read();
    System.out.println(ch); 
         }
    catch(Exception e)
    {
    System.err.println(e);
    }
        }
    }
      

  8.   

    bf.read()返回一个int型,需强制转换。
    ch=(char)(bf.read())
      

  9.   


    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("请输入要备份的文件名: "); 
    String fileName = bf.readLine(); 
    System.out.println("要备份的文件是: " + fileName); 
    System.out.println("是否开始备份?(Y/N)"); 
    char ch; 
    ch = (char) bf.read(); 
    System.out.println(ch);
      

  10.   

    int ch = 0;
    ch = bf.read();
    或者
    int ch ;
    ch = bf.read();
    都没问题!
    我的jdk也是1.6的!测试了没问题!
      

  11.   

    你的代码有问题,没有强制转换bf.read()的类型,你要看他是什么返回值。
      

  12.   

    能运行?编译都通不过吧?char ch = bf.read(); 
    可以赋值?强转为char再赋值...
      

  13.   

    个人觉得有2点错误:
    1.要强制转换成char类型的
    2.BufferedReader流需要关闭,因为他有缓存
      

  14.   

    LZ最好用集成开发环境如ECLIPSE,
    这样会在开发的时候会给出错误提示,
    这样可以根据提示修改错误,关于代码问题可以参加13楼的:
      

  15.   

            BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
            System.out.println("请输入要备份的文件名: "); 
            String fileName = bf.readLine(); 
            System.out.println("要备份的文件是: " + fileName); 
            System.out.println("是否开始备份?(Y/N)"); 
            char ch = 0;
            ch = (char) bf.read(); 
            System.out.println(ch);
            bf.close();实验证明这样是可以的
      

  16.   

    既然你用了 BufferedReader 就应该使用它的好用的方法,readLine(),而不应该再使用read(),String ch = bf.readLine();也应该可以的