工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 5624|回复: 9

JAVA中输入的问题

[复制链接]
发表于 2007-7-23 16:02 | 显示全部楼层 |阅读模式
在JAVA中应该有象C中的SCANF功能一样的函数,但是不知道是那个,我用System.in.read()却不行
C:\JAVA CLASS\xx.java:38: unreported exception java.io.IOException; must be caught or declared to be thrown
            System.in.read();
没考虑异常,但是是不是每次用这个都要考虑异常?异常怎么考虑啊···高手们教教···

[ 本帖最后由 jieshao733 于 2007-7-23 16:11 编辑 ]
发表于 2007-7-23 21:09 | 显示全部楼层

学会用网络搜索……

http://book.csdn.net/bookfiles/150/1001506491.shtml


1.1  简介为全面了解“异常”的概念,先来分析一个实例。假定要编写一个Java程序,该程序读入用户输入的一行文本,并在终端显示该文本。这是一个演示Java语言I/O功能的简单回显(echo)程序。若认为代码一定能正常运行,则可以编写以下程序:
1  import java.io.*;
2  public class BuggyEchoInput{
3       public static void main(String [] args){
4            System.out.println("Enter text to echo");
5            InputStreamReader isr = new InputStreamReader(System.in);
6            BufferedReader inputReader = new BufferedReader(isr);
7            String inputLine = inputReader.readLine();
8            System.out.println("READ: " + inputLine);
9       }
10  }
分析一下这段代码,在BuggyEchoInput类中,第3行声明了一个main方法;第4行提示用户输入文本;在第56行设置BufferedReader对象连接到InputStreamReader,而InputStream Reader又连接到标准输入流System.in;第7行读入一行文本;第8行用标准输出流System.out显示出该文本。
实际上,BuggyEchoInput类完全可能出现问题。要在调用第7行的readLine方法时正确读取输入,下面几种假设都必须成立:假定键盘有效,键盘能与计算机正常通信;假定键盘数据可从操作系统传输到Java虚拟机,又从Java虚拟机传输给inputReader
大多数情况下,上述假设都成立,但不尽然。为此,Java采用异常方法,以应对可能出现的错误,并采取步骤进行更正。在本例,若试图编译以上代码,将看到以下消息:
BuggyEchoInput.java:7: unreported exception java.io.IOException;
must be caught or declared to be thrown
String inputLine = inputReader.readLine();
1 error
从中可看到,第7行调用的readLine方法可能出错;若果真如此,则产生IOException来记录故障。编译器器错误是在告诉您:需要更改代码来解决这个潜在的问题。
HTML Java文档中,也可看到同样的信息。若在浏览器打开BufferedReader类的Java文档页,并查看readLine方法,将看到图1-1显示的内容。
1-1  BufferedReader类的readLine方法的Java文档
由图1-1可知,readLine方法有时产生IOException。如何处理该潜在故障?编译器要求“捕获”或“声明”IOException。“捕获(catch)”指当readLine方法产生错误时截获该错误,并处理或记录问题。而“声明(declare)”指错误可能引发IOException,并通知调用该方法的任何代码:可能产生异常;换言之,“声明”不处理异常,而将异常传给调用该方法的任何代码。
若要捕获异常,必须添加一个特殊的“处理代码块”,来接收和处理IOException。可能的回显程序如下所示:
1  import java.io.*;
2  public class EchoInputHandle{
3       public static void main(String [] args){
4            System.out.println("Enter text to echo");
5            InputStreamReader isr = new InputStreamReader(System.in);
6            BufferedReader inputReader = new BufferedReader(isr);
7            try{
8                 String inputLine = inputReader.readLine();
9                 System.out.println("READ: " + inputLine);
10             }
11             catch (IOException exc){
12                  System.out.println("Exception encountered: " + exc);
13             }
14       }
15  }
新添的代码块包含关键字trycatch(7101113),表示要读取输入。若成功,则正常运行。若读取输入时出错,则捕获问题(IOException对象表示),并采取相应措施。在本例,采用的处理方式是输出异常。
若不准备捕获IOException,仅声明异常,则要特别指定main方法可能出错,而且特别说明可能产生IOException。此时的程序可能如下所示:
1  import java.io.*;
2  public class EchoInputDeclare{
3       public static void main(String [] args) throws IOException{
4            System.out.println("Enter text to echo");
5            InputStreamReader isr = new InputStreamReader(System.in);
6            BufferedReader inputReader = new BufferedReader(isr);
7            String inputLine = inputReader.readLine();
8            System.out.println("READ: " + inputLine);
9      }
10  }
此代码未采取措施来处理readLine方法的可能故障。但它说明:main方法可能产生IOException,调用该方法的任何代码都必须作好处理问题的准备。
在简要介绍这个示例程序后,下面将详细讨论基本概念,讲述异常和异常的产生方式,描述基本类层次结构,解释捕获和声明异常的规则。
回复

使用道具 举报

发表于 2007-7-23 21:13 | 显示全部楼层
好像有一个
import java.util.Scanner;

Scanner in = new Scanner(System.in);
//输入一行字符
String var = in.nextLine();
//输入一个Int
int var = in.nextInt();
//输入双精度的
double var = in.nextDouble();
//输入一个以空格结束的
//String var = in.next();

PS:我也刚接触java,不知道对楼主有没有帮助
回复

使用道具 举报

发表于 2007-7-26 04:50 | 显示全部楼层

http://gdutbbs.com/viewthread.php?tid=148004

回复

使用道具 举报

发表于 2007-7-28 22:55 | 显示全部楼层
想学JAVA就要撇开C语言的习惯,现在的JAVA只适合于BS系统开发,或其它系统的整合中界,想在执行的时候用C的scanf那样输入数据不太好。BS系统是一般情况通过网页提交来接收数据,JAVA擅长request来获取数据。
回复

使用道具 举报

发表于 2007-7-29 00:12 | 显示全部楼层
楼上说的,不敢苟同……
回复

使用道具 举报

发表于 2007-7-29 15:59 | 显示全部楼层
同意楼上

不管怎样,java的IO操作值得学习
回复

使用道具 举报

 楼主| 发表于 2007-7-30 01:35 | 显示全部楼层
非常感谢各位的鼎力帮助,几天没上网了,在这几天中我学习了很多二楼说的对System.in的包装已经学习了,三楼说的扫描器也学习了,5楼说的request也曾经见过,request好像是用来得到传输数据的吧。我也支持7楼版主说的,IO流的操作是值得学习的,顺便夸句,版主用的那照片的MM很PL,很青春,如果版主是女的的话,而照片又是本人的照片的话·····
再次感谢各位的帮助,以后学习JAVA的路上还望得到你们更多的支持
回复

使用道具 举报

发表于 2012-8-10 16:49 | 显示全部楼层
java我也是刚接触哦!
回复

使用道具 举报

发表于 2012-8-22 23:46 | 显示全部楼层
07年的帖都被你翻出来了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-3 02:11

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表