IO获取控制台输入

获取输入信息可以使用 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());}
		//...
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值