实验二 字符串

1、目的要求:

(1.掌握Java字符串的概念和使用。

(2.能够使用字符串的查找、替换、索引等功能。

(3.学会使用字符串的拆分方法。

(4.掌握字符串比较的方法。

(5.培养使用Java字符串解决实际问题的能力。

2、实验内容:

(1.创建一个类(DoubleConverter),该类的作用是将一个字符串的值转换成浮点型(double)数值。

要求:设计一个测试类来测试DoubleConverter。当测试类开始运行时,要求用户从键盘输入一个字符串,然后调用DoubleConverter的方法将字符串转换成为一个浮点型的数值。当用户输入的字符串不是浮点数时,该方法应该提示错误,并退出程序;否则返回该数值。

提示:把这两个类放在包内。不能使用Java内置的Integer类和Scanner类,而必须使用String类的charAt等方法提取每一个数字。

package lianxi1;

public class DoubleConverter {

       private double result;

       public boolean convert(String value){

              result =0;

              boolean is = true;

              int zheng = 1;//整数位数

              int xsd = 0;//小数点的位数

              char[] cha = value.toCharArray();//字符串转换成字符数组

              int[] in = new int[cha.length];

              for(int i=0;i < cha.length;i++)

              {

                     if(cha[i]>='0'&&cha[i]<='9')

                     {

                            in[i]=cha[i]-'0';

                     }

                     else if(cha[i]=='.'&&xsd==0){//只能有一个小数点所以必须xsd==0

                            in[i]=-1;

                            zheng = i;

                            xsd++;

                     }

                     else{

                            is = false;

                            break;

                     }

              }

              if(xsd == 0 || is == false)//xsd==0表示没有小数点

              {

                     return false;

              }

              for(int i = 0 ; i< in.length ; i++){

                     if(i==zheng){

                            continue;

                     }

                     else if(i

                            result += in[i]*Math.pow(10,zheng-i-1);

                     }

                     else if(i>zheng)

                            result += in[i]*Math.pow(10,zheng-i);

                     else{

                     }

              }

              return is;

       }

       public double getresult(){

              return result;//返回结果的

       }

}


/********另一个.java**********/

package lianxi1;

import java.util.Scanner;

public class DoubleConverterTest {

       public static void main(String []args) {

              Scannerinput = new Scanner(System.in);

              System.out.println("请输入一个double:");

              while(true){

                     Stringstr = input.nextLine();

                     DoubleConverterdc = new DoubleConverter();

                     if(dc.convert(str)){

                            System.out.println("您输入的double 是 :" + dc.getresult());

                     }

                     else{

                            System.out.println("您输入的不是double!");

                            System.exit(0);

                            input.close();

                     }

              }

       }

}

实验二 字符串_第1张图片
运行结果

(2.编写一个Java程序,将用户输入的句子当中每一个单词的第一个字母大写,而单词中的其余字母小写。

要求:程序运行后要求用户输入一个句子。然后提取每一个单词,并将单词的首字母转换成大写,其余字符小写。使用StringBuffer类来创建替换过大小写的新字符串。最后输出新字符串。

提示:需要使用Scanner的nextLine()方法来获取一个句子。注意:单词的分割符除了空格之外,还可能有Tab或者(,;.等标点符号)。注意判断首字符是不是字母。单词中的其他字母可能为大写。

例如:当用户输入”Thisis a samPLe sentencE to demostrATE the TasK 2.”

程序应该输出:This IsA Sample Sentence To Demonstrate The Task 2.

package shiyan23;

import java.util.Scanner;

public class FirstDaxie {

              public static void main(String []args){

                     Scannerinput = new Scanner(System.in);

                            Stringstr = input.nextLine();

                            StringBuffersBuffer  =Tofirstdaxie(str);

                            System.out.println(sBuffer);

                            input.close();

              }

              public  static StringBuffer Tofirstdaxie(String value){

                     StringBufferresult = new StringBuffer();

                     value = value.trim();//去掉前后多余空格

                     result.append(Character.toUpperCase(value.charAt(0)));//第一个大写字母

                     for(int i=1;i

                     {

                                   if(Character.isLetter(value.charAt(i))&&!Character.isLetter(value.charAt(i-1))){//遇见i是字母i-1不是字母

                                          result.append(Character.toUpperCase(value.charAt(i)));

                                   }else if(!Character.isLetter(value.charAt(i))){//不是字母

                                          result.append(value.charAt(i));

                                   }else{//是字母就转换成小写

                                          result.append(Character.toLowerCase(value.charAt(i)));

                                   }                   

                     }

                     return result;

              }

}

运行结果

(3.编写一个猜成语的小游戏。

要求:使用一个字符串数组来保存10个四字成语,例如:

String [] idioms = {“凉拌黄瓜”, “红烧肘子”, …};

使用一个字符数组来保存20个无关字符,例如:

String [] chars = {‘吃’, ‘喝’, ‘胡’, …};

每次游戏开始时,随机选择一个成语,然后提取其中的4个汉字,再从字符数组中随机选择另外6个汉字,组成一个10个汉字的数组(汉字顺序随机)。注意!如果成语中,有重复的汉字,则只算一个,那么要从字符数组中多选出汉字。然后提示用户成语中包含这10个汉字,让用户猜测成语,用户输入汉字的编号,程序反馈汉字在成语中的位置。用户只有6次猜错机会,当6次机会用完后,游戏结束(猜对不占用次数)。当用户完全猜测出成语后,程序输出用户猜错的次数。

提示:使用java.util.Random类产生随机数。使用方法如下(具体方法请参见Java API文档):

Random random = new Random(1000);  //参数表示随机数种子

int index = random.nextInt(10);  //产生[0,10)之间的随机整数

游戏过程如下:

第一次:

四字成语中包含的汉字如下:

1.王; 2.中; 3.力; 4.习; 5.努; 6.可; 7.时; 8.学; 9.我; 10.成;

[○○○○]

剩余猜测次数为6次,请输入你的猜测:1

对不起,“王”字不在成语中,剩余猜测次数为5次,请再次输入你的猜测:2

对不起,“中”字不在成语中,剩余猜测次数为4次,请再次输入你的猜测:8

[○○学○]

恭喜你,“学”字在成语中的位置是:3

剩余猜测次数为4次,请再次输入你的猜测:9

对不起,“我”字不在成语中,剩余猜测次数为3次,请再次输入你的猜测:9

对不起,“我”字你已经猜过了,剩余猜测次数为2次,请再次输入你的猜测:5

[努○学○]

恭喜你,“努”字在成语中的位置是:1

剩余猜测次数为2次,请再次输入你的猜测:6

对不起,“可”字不在成语中,剩余猜测次数为1次,请再次输入你的猜测:10

对不起,“成”字不在成语中,并且你已经Game Over了!


第二次(假设还是同样的成语):

四字成语中包含的汉字如下:

1.王; 2.中; 3.力; 4.习; 5.努; 6.可; 7.时; 8.学; 9.我; 10.成;

[○○○○]

剩余猜测次数为6次,请输入你的猜测:1

对不起,“王”字不在成语中,剩余猜测次数为5次,请再次输入你的猜测:8

[○○学○]

恭喜你,“学”字在成语中的位置是:3

剩余猜测次数为5次,请再次输入你的猜测:9

对不起,“我”字不在成语中,剩余猜测次数为4次,请再次输入你的猜测:5

[努○学○]

恭喜你,“努”字在成语中的位置是:1

剩余猜测次数为4次,请再次输入你的猜测:3

[努力学○]

恭喜你,“力”字在成语中的位置是:2

剩余猜测次数为4次,请再次输入你的猜测:4

[努力学习]

恭喜你,“习”字在成语中的位置是:4

太棒了!你一共猜错了2次,已经猜出了整个成语!

package shiyan23;

import java.util.Random;

import java.util.Scanner;

public class caichengyu {

       public static voidmain(String []args){

              Scanner input =new Scanner(System.in);

              String []idioms ={"聪明睿知","滚瓜溜油" , "闻鸡起舞" , "铁杵磨针" , "盲人摸象" , "守株待兔" , "滥竽充数" , "邯郸学步" , "井底之蛙" , "叶公好龙"};

              Character []chars= {'王','中','离','下','怒','就','散','是','位','为'};

              Character index[]= {'a','a','a','a','a','a','a','a','a','a'};

              Character daan[]= {'[','O','O','O','O',']'};

              Random random =new Random();

              int a =random.nextInt(10);//产生0-10(不含10)的随机数

              String s =idioms[a];

              int t = 0;

              while(t<4){

                     int j =random.nextInt(10);

                     if(index[j]=='a'){

                            index[j]=s.charAt(t);

                            t++;

                     }

                     else{

                     }

              }

              t=0;

              while(t<6){

                     int j =random.nextInt(10);

                     int k =random.nextInt(10);

                     if(index[j]=='a'&&chars[k]!='a'){

                            index[j]=chars[k];

                            chars[k]='a';

                            t++;

                     }else{

              }

       }

              System.out.println("四字成语中包含的汉字如下:");

              t=0;

              while(t<10){

                     t++;

                     System.out.print(t+ "." + index[t-1] + " ");

              }

              System.out.println("");

              for(inti=0;i<6;i++){

                     System.out.print(daan[i]);

              }

              System.out.println("");

              int sum=6;

              int ant=0;

              int cuo=0;

              int choice;

              int []visit ={0,0,0,0,0,0,0,0,0,0,0};

              System.out.print("剩余猜测次数为"+sum+"次,请输入你的猜测:");

              while(sum>0){

                     sum--;

                     choice =input.nextInt();

                     Charactertemp = index[choice-1];

                     if(visit[choice-1]==1){

                            cuo++;

                            if(cuo==6){

                                   System.out.println("对不起,'"+temp+"'字不在成语中,并且你已经Game Over了!");

                            }else{

                            System.out.println("对不起,'"+temp+"'字你已经猜过了,剩余猜测次数为"+sum+"次,请再次输入你的猜测:");

                            }

                            continue;

                     }

                     visit[choice-1]=1;

                     intflag=0;

                     for(inti=0;i<4;i++){

                            if(temp== s.charAt(i)){

                                   ant++;

                                   sum++;

                                   daan[i+1]=temp;

                                   for(intj=0;j<6;j++){

                                          System.out.print(daan[j]);

                                   }

                                   System.out.println("");

                                   System.out.println("恭喜你,'"+temp+"'字在成语中的位置是:"+(i+1));

                                   if(ant==4){

                                          System.out.println("太棒了!你一共猜错了"+cuo+"次,已经猜出了整个成语!");

                                          input.close();

                                          return;

                                   }

                                   System.out.println("剩余猜测次数为"+sum+"次,请再次输入你的猜测:");

                                   flag=1;

                                   break;

                            }

                     }

                     if(flag==0){

                            cuo++;

                            if(cuo==6){

                                   System.out.println("对不起,'"+temp+"'字不在成语中,并且你已经Game Over了!");

                            }else{

                            System.out.println("对不起,'"+temp+"'字不在成语中,剩余猜测次数为"+sum+"次,请再次输入你的猜测:");

                            }

                     }

              }

              input.close();

}

}


实验二 字符串_第2张图片
hello
实验二 字符串_第3张图片
world

你可能感兴趣的:(实验二 字符串)