模板
import java.io.*;
class Main{
static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in));
// ins 用于读入字符串这样的数据,当然也可以读入数字等,不过是String转变为基本类型数据
static StreamTokenizer in = new StreamTokenizer(ins);
// in 用于读入int、long、double等基本数据类型,当然也可以用来读入String(有一定的限制条件)
static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
// out 用于输出,代替以前的System.out.println();
public static void main(String[] args) throws IOException{
out.close();
}
}
初始
static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in));
// ins 用于读入字符串这样的数据,当然也可以读入数字等,不过是String转变为基本类型数据
static StreamTokenizer in = new StreamTokenizer(ins);
// in 用于读入int、long、double等基本数据类型,当然也可以用来读入String(有一定的限制条件)
static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
// out 用于输出,代替以前的System.out.println();
基本数据类型
记得主程序要抛异常
public static void main(String[] args) throws IOException {
int a = 0; int b = 0;
in.nextToken(); // 读入数据时,记得每一次读取,都要先in.nextToken()
a = (int)in.nval; // 因为in.nval接收的是double类型,所以要强制类型转换
in.nextToken();
b = (int)in.nval;
out.println("a + b = "+(a+b));
out.close(); //程序最后要关闭out,不然不输出
}
字符串类型
public static void main(String[] args) throws IOException {
// 此时输入:hello world!
in.nextToken();
String s1 = in.sval; // 类似于以前的Scanner的next()方法。
in.nextToken(); // 同时也不要忘了in.nextToken()!!!
String s2 = in.sval;
out.println(s1); // hello
out.println(s2); // world
}
hello
world
使用此方法不会识别!等符号,且遇到空格、换行就会停止读取。
最关键的是无法读取纯数字的字符串,如果读取有空格隔开的数字字符串,可以用下面的方法读取一行,再进行切割。不过要事先知道能读取几个数字
使用 ins.readline()
读取一行
//输入hello world
String s = ins.readLine();
out.println(s); // 所以sval用的时候一定要谨慎考虑输入的数据是否会影响后面数据的读入!!
out.close(); // out.close()一定不能忘!否则不输出数据
>>> hello world
读取空格分隔的一行字符串
//读入111 222
String string = ins.readLine();
String[] strings = string.split(" ");
int sa = Integer.parseInt(strings[0]); // 类似的String转变为Integer方法见下方的图片
int st = Integer.parseInt(strings[1]);
out.println(sa);
out.println(st);
out.close(); // out.close()一定不能忘!否则不输出数据
>>>111
>>>222
总结
- 使用
in
时, 无论要读入什么,都要记得先执行方法in.token()
- 数字用
in. nval
,默认为 double 类型,int 类型要记得强制类型转化 - 使用
in.sval()
只能读取字符串,且遇到空格、换行就会停止,无法读入纯数字 - 使用
ins.readLine()
读入一行 - 字符串使用
split()
方法切割字符串,学会字符串转数字
补充
本贴来源:https://blog.csdn.net/weixin_51304266/article/details/121235344?spm=1001.2014.3001.5506
可自行观看
封装一下感觉会更爽使用-kattio–stringtokenizer-作为输入
强啊,你这个里面的使用起来更加简单了
大佬,打比赛的时候,直接手写实现这些结构吗?自己手写的话,那为啥还管参赛方会不会管呢?