1、
实验11 字符串处理
1. 统计单词(选做) 40031
输入一个正整数repeat (0 2、atic void main(String []args ){
int ri, repeat,count, word,i;
String line;
char c;
Scanner in=new Scanner(System.in);
repeat=(in.nextLine()).charAt(0)-'0';
for(ri=1; ri<=repeat; ri++){
line=in.nextLine();
/*---------*/
count=word=0;
for(i=0;i 3、){
c=line.charAt(i); //从字符串line中取出第i个字符,放入变量c
if(c==32) word=0; //当前字符是空格,表示不是单词
elseif(word==0){ //当前字符不是空格,同时word=0,表示新单词开始
word=1;
count++;
}
}
System.out.println( count);
}
}
}
2. 输出一个整数的各位数字(选做) 40032
输入一个正整数repeat (0< 4、repeat<10),做repeat次以下运算:
输入一个整数,从高位开始逐位输出它的各位数字。
输出语句:System.out.print(digit+" ");
例:括号是说明
输入
3 (repeat=3)
123456
-600
8
输出
1 2 3 4 5 6
6 0 0
8
import java.util.Scanner;
public class Test40032{
public static void main(String []args ){
int ri, repeat;
int d 5、igit;
long n, temp, pow;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextLong();
/*---------*/
n=Math.abs(n);
String s=String.valueOf(n); //把整数n转换成字符串
for(int i=0;i 6、i++){
digit=s.charAt(i)-'0'; //从高位到低位依次得到一位数字
System.out.print(digit+" "); //输出该位数字,再加一个空格
}
System.out.println();
}
}
}
注意:假设语句digit=s.charAt(i)-'0'; 改为 digit=s.charAt(i);
那么变量digit的值为该字符的unicode编码。
//解法2:
n=Math.ab 7、s(n);
char[] cs=String.valueOf(n).toCharArray();
//把整数n转换成字符串后存入字符数组cs,cs的元素就是n的每位数字
for(int i=0;i 8、2#abc+0# (连续输入2串字符“hello 12”和“abc+0”)
输出:
8 (“hello 12”的长度是8)
5 〔“abc+0”的长度是5〕
import java.util.Scanner;
public class Test60021{
public static void main(String []args){
int len,count,i,k;//变量count,k未用到
char ch;
String str;
Scanner in=new Scanner(Syste 9、m.in);
str=in.next();//对5月7日前建立的练习用in.nextLine();
/*---------*/
len=0; //保存当前字符串的长度
// count=0; //保存字符串个数,可以不写
for(i=0;i 10、串增加1个,可以不写
len=0; //新的字符串要开始了
}
else len++; //当前字符串长度加1
}
}
}
//解法2:
String[] s=str.split("#"); //s为字符串数组
for(i=0;i 11、O〞,“U〞以外的大写字母)。
例:括号是说明
输入:
3 (输入3个字符串)
HELLO
IT12
uieiaba
输出:
3 ("HELLO"中有3个大写辅音字母)
1 〔"IT12"中有1个大写辅音字母〕
0 〔"uieiaba"中没有大写辅音字母〕
import java.util.Scanner;
public class Test60022{
public static void main(String []args){
int count,i,j,n;
char ch; 12、
String str;
Scanner in=new Scanner(System.in);
n=(in.nextLine()).charAt(0)-'0';//读取输入的第1行的第1个字符,转换成数值
for(i=1;i<=n;i++){
str=in.nextLine();//读取输入的下一行
/*---------*/
count=0; //保存大写辅音字母的个数
for(j=0;j 13、 ch=str.charAt(j); //从字符串中逐个取出字符
if((ch>='B'&&ch<='Z')&&(ch!='E'&&ch!='I'&&ch!='O'&&ch!='U'))//判断
//大写字母'B'~'Z'中去掉'E','I','O','U'
count++;
}
System.out.println(count);
}
}
}
5. 查找字符
先输入一个字符ch。然后输入一个正整数n (0 14、),做n次以下运算:
输入一行字符串,在字符串中查找该字符(ch),如果找到,那么输出该字符在字符串中最后出现的位置(从0开始);否那么输出“Not Found〞。
例:括号是说明
输入:
m (输入一个字符)
3 (要输入3行字符串)
moon
programming
1234
输出:
0 (m在"moon"中最后出现位置是0)
7 (m在"programming"中最后出现位置是7)
Not Found ("1234"中没有m)
import java.util.Scanner;
public class 15、Test60023{
public static void main(String []args){
int index,i,n,j;
char ch;
String str;
Scanner in=new Scanner(System.in);
ch=(in.nextLine()).charAt(0);//读取输入的第1行的第1个字符,就是要查找的字符
n=(in.nextLine()).charAt(0)-'0'; //读取输入的第2行的第1个字符,转换成数值
16、 for(i=1;i<=n;i++){
str=in.nextLine();//读取输入的下一行
/*---------*/
//从字符串末尾开始找字符ch,第1次找到时记住它的位置,终止循环。
index=-1; //先假设没找到
for(j=str.length()-1;j>=0;j--){
if(str.charAt(j)==ch)
{index=j;break; }
}
if(index>=0) System.out.println 17、index);
else System.out.println("Not Found");
}
}
}
//解法2:从当前字符串中找字符ch,找到时记住它的位置,继续找下一个,
// 循环完毕后,index中的值就是最后出现的位置。
index=-1; //先假设没找到
for(j=0;j 18、做repeat次以下运算:
输入一行字符串,生成一个新的字符串,将原字符串中的大写字母用下面列出的对应大写字母替换, 其余字符不变, 输出新字符串.
原字母 对应字母
A ──→ Z
B ──→ Y
C ──→ X
D ──→ W
……
X ──→ C
Y ──→ B
Z ──→ A
例:括号是说明
输入:
3 (输入3行字符串)
A flag of USA
IT12
oueiaba
输出:
Z flag of FHZ
RG12
oueiaba
import 19、java.util.Scanner;
public class Test60024{
public static void main(String []args){
int ri, repeat, i;
char ch;
String str1,str2;
Scanner in=new Scanner(System.in);
repeat=(in.nextLine()).charAt(0)-'0';
for(ri=1; ri<=repeat; ri++){
str 20、1=in.nextLine();
/*---------*/
str2=""; //保存转换后的新字符串
for(i=0;i






