1. 计算字符串最后一个单词的长度,单词以空格隔开。
1.1 分析
两个指针:pre和post。用于确定最后一个单词的前后位置
当pre位置的字符为空格时,post置为它的下一位,post自增,知道它等于数组长度(遍历结束)或者它当前所指位置为空格;
- 若为空格,则令pre=post,post=pre+1重复上述步骤
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
new Main().getNum(str);
}
public void getNum(String str) {
int pre=0;
int post=0;
if(str.indexOf(' ')==-1){
System.out.println(str.length());
return;
}
char[] chs=str.toCharArray();
while(pre<chs.length) {
if(chs[pre]==' ') {
post=pre+1;
while(post<chs.length&&chs[post]!=' ')
post++;
if(post==chs.length)
break;
if(chs[post]==' ')
pre=post;
}
else
pre++;
}
System.out.println(post-pre-1);
}
}
注:
1.String中怎么判断是否包含哪个字符?
String str="zhidao";
if(str.indexOf("a")==-1){
//等于-1表示这个字符串中没有a这个字符
//do something
}
else{
//do something
}
2.写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
2.1 分析
注意:不区分大小写!
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.next().toLowerCase();
String target=sc.next().toLowerCase();
char[] chs=target.toCharArray();
getCount(str,chs[0]);
}
public static void getCount(String str,char target){
char[] chs=str.toCharArray();
int count=0;
int i=0;
while(i<chs.length){
if(chs[i]==target)
count++;
i++;
}
System.out.println(count);
}
}
注:
1. String类型转换为Char类型:
String是字符串,char是字符,所以如果要把String转成char类型,那么要用char数组来存放。
用String的toCharArray() 方法直接转。例如:
String str = “a”;
char[] ch = str.toCharArray();
那么ch数组的内容就是a,ch[0] 的内容就是 'a'
如果String str = “abcdefg”;
char[] ch = str.toCharArray();
那么ch数组的内容就是a,ch[1] 的内容就是 'b'
2. 大小写转换的函数
public class admin{
public static void main(String args[]){
String a1,a2,a3,t1="ABCDabcd";
System.out.println("原来是这个样:"+t1);
a1=t1.toUpperCase();
System.out.println("字符串小写变大写:"+a1);
a2=t1.toLowerCase();
System.out.println("字符串大写变小写:"+a2);
a3=a1.concat(a2);
System.out.println("大写字符串连接小写字符串后:"+a3);
}
}
3. next()和nextLine()
next():读到空格
nextLine():读一行