1、由于System.in 连接的是程序和控制台
如果控制台没有输入任何东西,那么包装后的readLine() 就只有等待
readLine()是读取一行,控制台什么都没有,readLine()怎么知道换行符在哪里,怎么停止下来,
所有就会等待用户输入,如果直接就输入回车,那么readLine()方法就马上执行完了,
所有当我输入回车后,readLine()方法才能执行完,接着才能执行后面的代码。
2、代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
public class MyScanner {
private BufferedReader br;
public MyScanner(InputStream is){
//因为系统标准输入流是一个字节流,用户无法输入字节
//将其转换为字符流
br = new BufferedReader(new InputStreamReader(is));
}
public String readLine(){
try {
//接收键盘输入
return br.readLine();
//由于br这个流,连接的是控制台,必须读取到换行符,方法才能结束,而现在控制台
// 什么都没有,所以会停留在这里,用户可以输入,只有输入换行符才会结束这个方法
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//根椐用户需要将键盘输入转为字符串和数字
public String nextLine() {
return readLine();
}
public int nextInt(){
return Integer.parseInt(readLine());
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyScanner sc = new MyScanner(System.in);
String s = sc.nextLine();
System.out.println(s);
int i = sc.nextInt();
System.out.println(i);
}
}
相关推荐
3. **读取客户端数据**:通过Socket对象获取输入流,并读取客户端发送的数据。 4. **向客户端发送数据**:通过Socket对象获取输出流,并向客户端发送数据。 ##### 服务器端代码详解 ```java public class TcpServer...
例如,我们可以使用`BufferedReader`和`PrintWriter`对输入流和输出流进行包装,方便地读取和写入文本数据。 以下是简单的代码片段示例: ```java // 服务器端 ServerSocket serverSocket = new ServerSocket(port...
当完成数据交换后,必须关闭输入流、输出流和套接字,以防止资源泄露。 此外,TCP提供了一套完整的机制来确保数据的可靠传输,包括序列号、确认应答、重传机制、流量控制和拥塞控制等。这些机制确保了即使在网络...
通常,我们会使用`BufferedReader`和`PrintWriter`对输入流和输出流进行包装,以方便进行文本读写: ```java BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); ...
每个平台都有自己的JVM实现,因此可以在不同的操作系统上运行相同的Java程序。 - **JVM**:Java虚拟机是一个虚拟计算机,负责执行字节码,并提供了一个独立于硬件环境的运行时环境。 4. **JRE和JDK的区别** - **...
在实际编程中,我们通常会使用BufferedReader和PrintWriter等类来包装输入流和输出流,以便更方便地进行文本数据的读写。例如,使用BufferedReader的readLine()方法读取客户端发送的文本行,使用PrintWriter的...
- 通过Socket对象获取输入流和输出流,用于读写数据。InputStream和OutputStream分别代表了网络连接的输入和输出,可以使用BufferedReader和PrintWriter进行包装,便于进行字符流操作。 3. **数据传输**: - 数据...
这段代码创建了一个输入流读取器,然后用缓冲区读取器包装它,使得可以一行一行地读取用户输入。 接着,集合是Java中存储和管理对象的主要方式。集合框架包括接口(如 `List`, `Set`, `Queue`)和实现这些接口的类...
- **缓冲流**:为了提高效率,通常会使用`BufferedReader`或`BufferedWriter`对输入流和输出流进行包装。 - **读取响应**:对于GET请求,可以通过`getInputStream()`读取HTTP响应的主体。对于POST或其他有主体的...
通信阶段,Socket提供了输入流和输出流进行数据交换。`Socket.getInputStream()`返回一个InputStream,用于读取服务器发送的数据;`Socket.getOutputStream()`返回一个OutputStream,用于向服务器写入数据。通常,...
在实际应用中,我们通常使用`InputStreamReader`、`BufferedReader`和`PrintWriter`等流类来包装Socket的输入/输出流,以方便文本数据的读写。例如,客户端可能这样发送数据: ```java Socket socket = new Socket...
Java中的InputStream和OutputStream抽象类提供了基本的字节流操作,Socket的输入流和输出流是它们的子类。 1. 读取数据: - 使用Socket的InputStream,通常使用`read()`或`read(byte[] buffer)`方法读取数据。 - ...
为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...
- 包装类将基本数据类型转换为对象形式。 2. **基本数据类型和包装类相互转换** - 使用包装类提供的构造方法或静态方法进行转换。 3. **基本类型和String之间的转换** - 使用String类提供的`valueOf()`方法或...
System.out.printf() 可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串 在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个...
这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...
- 输入流和输出流。 - 字节流和字符流。 **15.6 I/O输入输出** - 包括文件读写、网络通信等多种应用场景。 以上内容涵盖了Java的基础知识到高级特性,从基本语法到面向对象编程,再到多线程和I/O操作等,全面地...