Bufferedreader bf=new BufferedReader(new InputStreamReader(System.in));
String s[]=bf.readLine().split(" ")
split(" ")
表示去掉输入的串中的空格
split("\")
表示去掉输入的串中的\
根据题目要求,想去什么符号就在split("")
引号中加什么。
int a=Integer.parseInt(s[0]);
int a[]=new int[n];
a的下标从1开始
for(int i=1;i<=n;i++){
a[i]=Integer.parseInt(s[i-1]);
}
以此题为例 :
for(int i=0;i<n;i++){
String s[]=bf.readLine().split(" ");
for(int j=0;j<s.length();j++){
int num=Integer.parseInt(s[j]);
}
for(int i=0;i<n;i++){
String s[]=bf.readLine().split(" ");
for(int j=0;j<s.length();j++){
int num=Integer.parseInt(s[j]);
}
}
Scanner sc=new Scanner(System.in);
String s=sc.next();
String s=sc.nextLine();
**sc.next()
**从遇到第一个有效字符(非空格、换行符)开始扫描,遇到第一个分隔符或结束符(空格’ ‘或者换行符’\n’)时结束。
sc.nextLine()
则是扫描剩下的所有字符串直到遇到回车为止。
sc.nextLine()
sc.next()
sc.nextLine()
**读入时出现空格情况,但是只要第一个串,空格后面的不能读入,如下图所示:
这时用**sc.nextLine()
就会将后面的数字都读进去造成读入错误**
这时就需要用sc.next()
遇到空格直接停下来,后面的数字都不读入。
有同学一看这中间无空格应该用**sc.nextLine()
**读入
我们来试一下~!
这样就会报错,出现某个字符匹配不上问题。
注意:这里用**sc.nextLine()
读取时会将空格一并读入**,但是我们不需要后面多余的空格,只需要前面的字母即可。
很简单,用**sc.next()
**,**遇到空格便停下来,不会读入多余的空格!
一些BFS/DFS题目需要读入二维字符数组
java中,是没有直接读入字符这么一种操作。
因此,我们需要先读入字符串再转换成字符数组!!!
char g[][]=new char[N][N];
for(int i=0;i<n;i++){
char a[]=sc.next().tocharArray();//把每一行字符串转换成字符数组
for(int j=0;j<n;j++){
g[i][j]=a[j];//再将每一列进行分配
}
}
char g[][]=new char[N][N];
for(int i=0;i<n;i++){
char a[]=sc.next().tocharArray();//把每一行字符串转换成字符数组
for(int j=0;j<n;j++){
g[i][j]=a[j];//再将每一列进行分配
}
}
String s=sc.next();
char op=s.charAt(0);
op=='a';
字符串的比较用**equals
**
字符的比较用 ==
(一) String s=new String()
String s=new String("abc");
(二)String.valueOf()
String.valueOf(int i):
作用:返回 int
参数的字符串表示形式。
调用**String.valueOf()
方法可以得到int
**形式下的表示形式。
例如:
int n=1234454;
String s=String.valueOf(n)
输出s的内容:1234454
可以替换其他参数形式详见
String.valueOf()
length()
作用:获取字符串的长度
int len=s.length();
equals()
作用:比较两字符串是否相等
String s1=sc.next();
String s2=sc.next();
s1.equals(s2)
s.charAt()
作用:根据字符串下标获取字符
char a=s.charAt(0);
获取字符串下标为0的字符
补充:
char []a=s.toCharArray();
char b=a[0];
转为数字:int b=a[0]-'0';
indexOf()
作用:返回找到的字符串/字符的起始下标,找不到则返回-1。
String s="abcd";
int a=s.indexOf("a");
contains()
作用:字符串中包含字符串/字符则返回true,
不包含则返回false
。
String s=sc.next();
boolean a=s.contains("想寻找的串/字符");
split()
作用:去掉字符串内的某个字符
常用于输入分割空格
String s[]=bf.readLine().split(" ");
trim()
作用:去掉字符串两边的空格
String s[]=bf.readLine().trim(" ");
作用:截取字符
String s1=s2.substring(start,end);
String s1=s2.substring(1,3);
String s1=s.substring(start);
String s1=s.substring(2);
2
为起始下标到字符串末尾的字符串String s2=s.substring(s.length()-n);
s.length()-n
到字符串末尾**的字符串n
位字符String s=sc.next();
String s2=s.substring(s.length()-2);
截取从**s.length()-2
到字符串末尾**的字符串
touppercase()
将字符串里的字符都转大写
String s1=s2.touppercase();
tolowercase()
将字符串里的字符都转小写
String s1=s2.tolowercase();
(1) 直接加: +=
String s1=sc.next();
String s2=sc.next();
s1+=s2
(2)StringBuffer类
StringBuffer s=new StringBuffer();
s.append(" ")
可以一直追加
s.append(" ").append(" ").append(" ")
char a[]=sc.next().toCharArray();
String S=sc.next();
char a[]=S.toCharArray();
如果我们是想从数组**a[]
** 下标1个开始读入字符该怎么做?
很简单,在读入串之前加上一个占位符占掉**a[]
的a[0]
位置即可。
这样就可以从数组下标1**开始读入字符
" "+sc.next()
这一整个整体要用括号括起来,不然会报类型转换错误。
正确代码如下:
(1)写法1
char a[]=(" "+sc.next()).toCharArray();
(2)写法2
char a[]=new char[N];
a=(" "+sc.next()).toCharArray();
int a=s.charAt(i)-'0';
相当于用s.charAt(i)
得到的字符的ASCII
码减去'0'
的ASCII
码
int a=s.charAt(i)-'A';
int a=s.charAt(i)-'a';
相当于用s.charAt(i)
得到的字符的ASCII
码减去'A(a)'
的ASCII
码
视题目而定
(char)(i + 'A')