IO获取控制台输入

本文探讨了在编程中,Scanner和IO流获取控制台输入的优劣及适用场景。Scanner提供了简便的输入方式,适用于小规模数据,而在竞赛和大量数据处理中,IO流因其速度优势被推荐。作者还分享了使用BufferedReader和InputReader的示例代码,以适应不同需求的数据处理.

获取输入信息可以使用 Scanner 对象,只需 new Scanner(System.in); 调用方法即可,代码也更简便。
既然Scanner更简便,为什么还需要IO获取控制台输入

  • IO比Scanner更 ,至于为什么更快参考文章 (菜鸡不懂)
  • 那更快又能干嘛,当然是竞赛,刷题了。
  • 只需要获取少量数据时,直接使用Scanner也无伤大雅,而需要或取大量数据时即可用IO了

这里附上:大佬代码
需要追求极致,拿竞赛第一 建议看上面大佬代码,下面代码仅供参考

需要获取到含空格数据(一行数据)时

import java.io.*;

public class Main{
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String string = in.readLine();//readLine() 读取一行数据
		in.close();
	}
}

按分隔符(含空格)分割的数据

import java.io.*;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) {
		new Main().one();
	}

	private void one() {
		InputReader in = new InputReader(System.in);//InputReader类型是下面的内部类
		String str = in.next();
		int a = in.nextInt();
		double b = in.nextDouble();
		
		//题外话
		//当是需要输出多组数据时,可使用PrintWriter ,将输出内容使用print()、println()、printf()存入
		//关闭流close() 或刷新flush() 可将内容输出
		PrintWriter out = new PrintWriter(System.out);
		out.println(str);//打印内容并终止该行
		out.print(a);//打印内容
		out.printf("%.1f",b); //使用指定格式字符串和参数将格式化的字符串写入此 writer 的便捷方法。
		out.flush();//刷新该流的缓冲。
//		out.close();//关闭该流并释放与之关联的所有系统资源。
	}
	
	class InputReader{//内部类
		BufferedReader reader;
		StringTokenizer token;//StringTokenizer 字符串分隔解析类型
								//java默认分隔符为 空格 制表符"\t" 换行符"\n" 回车符"\r"
		
		public InputReader(InputStream in) {
			this.reader = new BufferedReader(new InputStreamReader(in));
		}
		
		String next() {//返回字符串的方法
			while(token==null || !token.hasMoreTokens()) {//hasMoreTokens() 返回是否还有分隔符
				try {
					token = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return token.nextToken();//nextToken() 返回当前位置到下一个分隔符之间的字符串
		}
		
		//按需要获取数据类型可通过相关方法对String进行转换,举例:
		int nextInt() {return Integer.parseInt(next());}//返回一个int
		long nextLong() {return Long.parseLong(next());}
		double nextDouble() {return Double.parseDouble(next());}
		char nextChar() {return next().charAt(0);}
		boolean nextBoolean() {return Boolean.parseBoolean(next());}
		BigInteger nextBigInteger() {return new BigInteger(next());}
		//...
	}
}
### 鼠标连点器的下载与使用教程 #### 软件功能概述 鼠标连点器是一种能够帮助用户自动完成重复性鼠标点击操作的工具,适用于多种场景,例如游戏操作、办公自动化等。其主要作用在于提升效率并减少手动操作带来的疲劳感[^1]。 #### 下载途径 通常情况下,鼠标连点器可以通过以下几种方式获取: - **官方网站**:许多开发者会提供官方版本供用户免费或付费下载。 - **第三方平台**:部分应用分发网站也会提供此类软件,但在选择时需注意安全性,避免下载到带有恶意代的版本。 - **自制脚本**:对于熟悉编程技术的用户来说,可以利用 Python 等语言自行开发适合自己的鼠标连点器[^4]。 #### 安装过程 安装鼠标连点器的过程相对简单,一般遵循以下流程: 1. 下载完成后打开 `.exe` 文件启动安装向导; 2. 按照提示逐步设置安装路径及其他参数,默认选项即可满足大部分需求; 3. 点击“完成”按钮结束整个安装环节[^2]。 #### 基础配置与使用说明 首次运行该类应用程序后,可能需要进行一定的初始化设定才能正常使用全部特性: - 设置触发条件:定义何时启用连续点击模式,比如通过指定快捷键实现开关控制。 - 自定义频率调节:依据实际应用场景调整每秒钟内的点击次数或者两次之间的时间间隔。 - 功能扩展支持:某些高级产品还允许绑定额外的功能模块,像图片识别定位目标位置再实施动作等功能[^3]。 #### 制作个性化解决方案 (可选) 如果现有市场上的成品无法完全契合个人特殊要求,则考虑借助开源社区资源学习如何构建专属方案也是一个不错的选择。以下是基于 Python 的简易示例代片段用于创建基础型鼠标连点器: ```python import time import threading from pynput.mouse import Button, Controller as MouseController from pynput.keyboard import Listener, KeyCode, Key delay = 0.01 button = Button.left start_stop_key = KeyCode(char='s') exit_key = KeyCode(char='e') class ClickMouse(threading.Thread): def __init__(self, delay, button): super().__init__() self.delay = delay self.button = button self.running = False self.program_running = True def start_clicking(self): self.running = True def stop_clicking(self): self.running = False def exit(self): self.stop_clicking() self.program_running = False def run(self): while self.program_running: while self.running: mouse.click(self.button) time.sleep(self.delay) mouse = MouseController() click_thread = ClickMouse(delay, button) click_thread.start() def on_press(key): if key == start_stop_key: if click_thread.running: click_thread.stop_clicking() else: click_thread.start_clicking() elif key == exit_key: click_thread.exit() listener.stop() with Listener(on_press=on_press) as listener: listener.join() ``` 上述脚本实现了简单的按键切换逻辑来开启/关闭自动点击行为,并提供了退出机制以便安全终止进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值