# String

  1. 猜数字游戏 需求分析
    (1)产生随机数 random
    (2)简单的提示:进入游戏,系统产生一个随机数 9
    for(3次固定循环){
    欢迎进入游戏,请输入猜测的数字
    8
    小了,您还有2次猜测机会,请输入猜测数字
    10
    大了,您还有1次猜测机会,请输入猜测数字
    9
    }
    //3次固定循环以后提示猜测的结果,结果方式是多少种
    //提示猜测结果:猜测正确或者说已经3次了,猜测失败
    //无论猜测是否ok,都会提示 是否再玩一次
    //如果可以那么继续从头继续产生新的随机数。。。
    否则提示 game over

  2. 代码

    System.out.println("进入游戏");	  
    Random r = new Random();
    int a=0,input=0;
    Scanner scanner =new Scanner(System.in);		
    while(true){
          
          
      a=r.nextInt(10);//系统产生的随机数据
      System.out.println("猜测的数字是:"+a);
      int i=0;//定义猜测的次数
      for(;i<3;i++){
          
          
    	System.out.println("请输入猜测的数字:");
    	input=scanner.nextInt();//用户输入的数据
    		if(input==a){
          
          
    			System.out.println("恭喜您猜测正确!");
    			break;
    		}else if(input<a){
          
          
    			System.out.println("偏小,您还剩"+(2-i)+"次机会");
    		}else if(input>a){
          
          
    			System.out.println("偏大,您还剩"+(2-i)+"次机会");
    				}				
    		}			
    	if(i==3){
          
          
    		System.out.println("没机会了猜测失败!");
    			}
    	System.out.println("是否再来一次? 0/1");
    	int again = scanner.nextInt();
    	if(again==1){
          
          
    	  break;
    	}
    }
    scanner.close();
    

String字符串

  1. 最重要的就是常用的实用方法,indexOf,substring…
  2. String为面向对象的开发(面向对象核心:方法,new,参数,返回值)
  3. String s1 = “Hello world!”;
    s1 = “Hello789world”;
    (1)不是替换,和基本类型的替换有区别,String是引用类型,创建的是一个操作对象,所以显示的结果还是替换后的结果,但是过程是声明一个新的对象
    (2)int a=12;
    a=54;
    为替换value
  4. String是一个类对象,int是一个基本类型,这是二者的本质区别
    int无法调用任何内容,而String的对象能调用出String类能够调用的所有方法
  5. 字符串和字符两个完全不同概念,但是二者还是相通的
  6. 字符是字节码编译产物,多个字符的罗列和编译形成字符串
  7. 字符串是用双引号括起的字符序列er字符是用单引号括起来的一个字符
    char s=‘s’;
    String s1=’’; // 语法错误 必须是双引号String s1="";
  8. int a=12;
    创建一个int基本类型的变量a初始值是12
    String b="";
    创建一个String类的对象为b,初始值是""

String常用重要的方法

  1. 字符串的index从0开始
  2. equals() 在引用类型中比较的是值,不是address,区分大小写
    equalsIgnoreCase() 区分大小写
  3. length() 返回长度,不等于index 的最大值,最大index是length()-1
  4. indexOf(String str) 根据String返回对应的index两个重载方法:
    (1)s1.indexOf(“wor”) 返回的是参数String中第一个char所在的index值,参数可以是String也可以是一个单个char那么如果参数的String不存在,返回-1,不会抛异常,默认是从左向右计算
    s1.indexOf(“o”,6):从index6的位置计算,参数String的index值 (2)s1.lastIndexOf(“o”),从右向左计算,和indexOf正相反
  5. 替换:replace(String oldChar,String newChar)
    replaceFirst(String oldChar,String newChar)
    (1)replace和replaceAll都是替换全部的概念,二者任选其一
    replaceFirst替换第一个String
    (2)String执行replace替换操作显示替换后的结果,但是继续打印原始String,还是没替换之前的效果,该隐藏的对象没有覆盖之前的String对象s1,所以后续执行s1的结果还是替换之前的。如果真正替换后显示:s1=s1.replace(“o”,“是”); 两个String对象赋值的过程了
  6. s1.substring(int beginIndex)
    s1.substring(int beginIndex, int endIndex)
    根据index 截取String
    (1)substring(int beginIndex) 从参数index截取到末尾
    (2)substring(int beginIndex, int endIndex)根据参数两个值,截取中间的部分
    涉及到上标下标概念,上标与index一样,下标是从1开始的判断,下标取值一定注意
    index上标: 0 1 2 3…
    s1 = " H e l l o789world";
    下标 : 1 2 3 456…
    System.out.println(“从上标1–下标4截取”+s1.substring(1,4));//值为:ell
    System.out.println(“从上标1–下标1截取”+s1.substring(1,1));/值为:e
    System.out.println(“参数index到结束截取”+s1.substring(1));/值为:
  7. trim() :去掉末尾空格
    获取前端页面提交参数和数据库获取参数需要,因为数据库页面获取的值带末尾空格的
  8. String.valueOf(234.43)基本类型都可以转换为String,但是String类型未必能转换为基本类型
  9. toString()也是基本类型转换为String的常用方法

一般常用方法

  1. charAt(int index)根据index返回对应char,只能返回char,不能返回String。
  2. endsWith(“y”),判断结束的String 返回boolean
  3. startsWith(“s”) 判断开始的String 返回Boolean
  4. s1.isEmpty() 判断是否为空
    s1="" false s1=" " true
    String中特殊的值:
    (1) String s1=null;create一个空的String对象
    (2) String s1=""; 字符串值的长度是0,不能视为空
    (3) String s1=" ";空格视为一个字符 ,不能视为空。(4)toLowCase();toUpperCase()转换大小写
  5. spite
    String s3=“re-,-yu-545-&*”;
    //根据"-“截取一个数组对象。
    String[] s4=s3.split(”-");
    // 遍历数组
    for (String string : s4) {
    System.out.println(string);
    }
    用处和DB相关,数据库有些字段是8-9-12-45类型的

StringBuffer StringBuilder

  1. 二者最常用的方法append,作用是追加字符串的过程中不会创建新的对象
    始终是一个对象,但是耗费的内存资源较大,所以如果不是类似String的追加累加,二者还是有些不适合的

案例

  1. 遍历一个String的全部char都是哪些,考验的还是charAt,substring
    如果需求变化是两个两个的输出遍历,charAt就不能用了

    String s=" helloworld!!!";//定义一个字符串
    for(int i=0;i<s.length();i++){
          
          //利用for循环来进行遍历
    	char c=s.charAt(i);//
    	System.out.print(c+" ");
    }
    //两个两个的输出遍历
    for(int i=0;i<s.length();i++){
          
          
    	 if((i+2)>s.length()){
          
          
    	   break;//超出边界
    	  }
    System.out.print(s.substring(i,i+2));//重复的两个两个输出,不重复的话不能是i++,而是i+=2
    }
    
  2. 控制台输入要查询的String,显示对应的位置第几个,不是index

    String s=" helloworld!!!";
    Scanner scanner=new Scanner(System.in);
    String input=scanner.next();
    if(s.indexOf(input)==-1){
          
          
    	 System.out.println("没有检索到输入的String");
    }else {
          
          
    	 System.out.println(""+(s.indexOf(input)+1));
    }
    scanner.close();
    
  3. 输入一个要被替换的String和输入一个替换的String显示替换后的结果

    String s=" helloworld!!!";
    Scanner scanner=new Scanner(System.in);//控制台输入
    System.out.println("输入被替换的字符串:");
    String input=scanner.next();		
    if(s.indexOf(input)==-1){
          
          
    	 System.out.println("没有检索到输入的String");
    }else {
          
          
    	System.out.println("请输入要替换的字符");
    	String newChar=scanner.next();
    	System.out.println("替换结果为"+s.replace(input, newChar));			 
    }
    scanner.close();
    
  4. 已有的一个String:中k华人民y共和y国abcdf合同y法
    (1)输入一个合法的被替换的String,如果输入不合法,提示用户重新输入。
    (2)执行结束第1步操作的时候,证明控制台输入了合法的String.为了验证用户输入位置判 断是否合法,需要记录下已存在的被替换的String的个数,以及相应的index位置.
    (3)因为string的个数和被替换的string的位置都是位置,而且二者需要呼应的所以需要[]
    (4)执行用户输入替换的位置,数字,验证的依据上一步记录的[]执行替换,思路2个,无论哪个思路,[]的index值是必须参考
    replace方法:
    a.判断输入的位置,如果输入的位置是1直接用replaceFirst
    b.如果不是1不能用replace,因为替换全部了,根据[]对应位置的index值截取然后执行 replaceFirst或者replace
    截取拼接String:直接替换的String去掉了。

    (5)代码

String ab="中k华人民y共和y国abcdf合同y法";
Scanner s=new Scanner(System.in);
ab="中k华人民y1共和y1国abcdf合同y1法";
System.out.println(ab);
String input=null;
do {
    
    
  System.out.println("输入被替换的String:");
  input=s.next();
  if(ab.indexOf(input)==-1) {
    
    
  System.out.println("没有搜索到被替换的String");
  System.out.print("请重新");
}else {
    
    
   break;
  }
} while (true);        
 StringBuffer su=new StringBuffer();
 //循环判断,ab中存在几个input String,并且对应的index位置是哪个   
 for (int i = 0; i < ab.length(); i++) {
    
    
  if((i+input.length())>ab.length()) {
    
    
    break;//超出边界了
   }
 //重复的两个两个输出
//System.out.println(ab.substring(i, i+2));
if(ab.substring(i, i+input.length()).equals(input)) {
    
    
//System.out.println(i);//相当于匹配String的当前index
   su.append(i+"-");
 }
         //数组对应的是
         //0         1           2
         //5         9         19      涉及到包装类
  }
// System.out.println(su);//"5-9-19-"   替换的位置是4
String[] indexs=su.toString().split("-");
 //输入替换的位置       
int inputIndex=0;
do {
    
    
   System.out.println(input+"存在的个数是"+indexs.length+",输入替换的位置:");
   inputIndex=s.nextInt();
// 超出数组长度,
 if(inputIndex<1 || inputIndex > indexs.length) {
    
    
   System.out.println("输入的位置超出替换的个数,");
    System.out.print("请重新");
   }else {
    
    
       break;
  }
} while (true);
System.out.println("请输入要替换的String");
String str=s.next();
//根据第一种方式,应用replace方法操作
//首先判断替换的位置是否是1
if(inputIndex==1) {
    
    
  System.out.println(ab.replaceFirst(input, str));
}else {
    
    
//如果不是1,那么首先截取对应位置的后面的String,和前面的
//int indexwei=indexs[inputIndex-1];得出的是对应index String的值
//借助包装类
int indexwei=Integer.valueOf(indexs[inputIndex-1]);
//截取前后String
String qian=ab.substring(0, indexwei);
String hou=ab.substring(indexwei, ab.length());
 System.out.println(qian+hou.replaceFirst(input, str));
//System.out.println(hou);                      
}      
```# String

1. 猜数字游戏  需求分析
   (1)产生随机数 random
   (2)简单的提示:进入游戏,系统产生一个随机数  9
         for(3次固定循环){
    
    
                欢迎进入游戏,请输入猜测的数字
              8
            小了,您还有2次猜测机会,请输入猜测数字
            10
            大了,您还有1次猜测机会,请输入猜测数字
            9
       }
     //3次固定循环以后提示猜测的结果,结果方式是多少种
     //提示猜测结果:猜测正确或者说已经3次了,猜测失败
     //无论猜测是否ok,都会提示 是否再玩一次
     //如果可以那么继续从头继续产生新的随机数。。。
      否则提示 game over

2. 代码

   ```java
   System.out.println("进入游戏");	  
   Random r = new Random();
   int a=0,input=0;
   Scanner scanner =new Scanner(System.in);		
   while(true){
    
    
     a=r.nextInt(10);//系统产生的随机数据
     System.out.println("猜测的数字是:"+a);
     int i=0;//定义猜测的次数
     for(;i<3;i++){
    
    
   	System.out.println("请输入猜测的数字:");
   	input=scanner.nextInt();//用户输入的数据
   		if(input==a){
    
    
   			System.out.println("恭喜您猜测正确!");
   			break;
   		}else if(input<a){
    
    
   			System.out.println("偏小,您还剩"+(2-i)+"次机会");
   		}else if(input>a){
    
    
   			System.out.println("偏大,您还剩"+(2-i)+"次机会");
   				}				
   		}			
   	if(i==3){
    
    
   		System.out.println("没机会了猜测失败!");
   			}
   	System.out.println("是否再来一次? 0/1");
   	int again = scanner.nextInt();
   	if(again==1){
    
    
   	  break;
   	}
   }
   scanner.close();

猜你喜欢

转载自blog.csdn.net/qq_52332852/article/details/114379729