A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-5-1 09:56  /  1184 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符串的练习部分视频没看懂,咋办啊 , 很郁闷。:(:(:'(:'(

6 个回复

倒序浏览
没看懂是正常的。先学会怎么用,再理解原理,再用。流程走一遍就学会了。
回复 使用道具 举报
我认为将几个典型案例弄会就可以了,不懂的点看视频(例如:for(int y=0,z=min.length()-i;z!=min.length()+1,y++,z++)之类的),只要还是敲,先记住为主。
例1 按照字典顺序将字符串数组从小到大排序
class StringDemo
{
public static void main(String[] args)
{
  String[] arr={"abc","gg","dd","sda","ok"};


  //排序前
  printArr(arr);


  sortArr(arr);

  //排序后
  printArr(arr);
}


//打印
public static void printArr(String[] arr)
{
  System.out.print("[");
  for(int x=0;x<arr.length();x++)
  {
   if(x!=arr.length()-1)
    System.out.print(arr[x]+",");
   else
    System.out.println(arr[x]+"]");
  }
}


//换位
private static void swap(String[] arr,int x,int y)
{
  String temp=arr[x];
  arr[x]=arr[y];
  arr[y]=temp;
}


//排序,用compareTo方法
public static void sortArr(String[] arr)
{
  for(int i=0;i<arr.length()-1;i++)
   for(int j=i+1;j<arr.length();j++)
    if(arr.compareTo(arr[j])>0)
     swap(arr,i,j);
}
}


例2 求一个字串在整串中出现的次数
class CountDemo
{
public static void main(String[] args)
{
  String str="adasafdsosdjfksosasjdkasoskdsj";
  String find="sos";

  int count=getString(str,find);
  System.out.println("count="+count);
}

public static int getString(String str,String find)
{
  //计数
  int count=0;


  //记录索引位置
  int index=0;


  //锁定位置
  while((index=str.indexof(find,index))!=-1)
  {
   index=index+find.length();
   count++;
  }
  return count;
}
}


例3 查找两个字符串中最大相同的子串
class MaxDemo
{
public static void main(String[] args)
{
  String str1="adsajasjsja";
  String str2="asdfhj";

  String find=getString(str1,str2);
  System.out.println("最大子串:"+find);
}

public static String getString(String str1,String str2)
{
  String max=null,min=null;


  //比长度,找max
  max=(str1.length()>str2.length())?str1:str2;


  //和最大值不同的就是最小值
  min=max.equals(str1)?str2:str1;

  for(int i=0;i<min.length();i++)
  {
   //z不能超过最小值的长度
   for(int y=0,z=min.length()-i;z!=min.length()+1,y++,z++)
   {
    String temp=min.substring(y,z);
    if(max.contains(temp))
     return temp;
   }
  }
  return null;
}
}


例4 用trim()方法去除字符串两端空白
class delString
{
public static void main(String[] args)
{
  String str="  jdk  ";
  str=trimString();
  System.out.println("去除空格后的结果:"+str);
}


public static String trimString(String str)
{
  int x=0,y=str.length()-1;


  //从头找空格
  while(x<=y&&str.charAt(x)==" ")
  {
   x++;
  }


  //从尾找空格
  while(x<=y&&str.charAt(y)==" ")
  {
   y++;
  }


  //substring包头不包尾,所以y+1。
  return str.substring(x,y+1);
}
}


例5 对一个字符串的数值进行从小到大排序
class sortDemo
{
public static void main(String[] args)
{
  String str="34 54  65  6767 45 434 33";
  str=sortString(str);
  System.out.println("排序后的结果:"+str);
}


public static String sortString(String str)
{
  //转成字符串数组
  String[] str_arr=toStringArray(str);


  //转成int数组
  int[] num_arr=toIntArray(str_arr);
  
  //排序
  sortArray(num_arr);


  //再转成字符串
  String temp=toString(num_arr);

  return temp;
}


public static String[] toStringArray(String str)
{
  String str_arr=str.split(" ");
  return str_arr;
}


public static int[] toIntArray(String[] str)
{
  int num_arr=new int[str.length()];

  for(int x=0;x<num_arr.length();x++)
  {
   num_arr[x]=Integer.parseInt(str[x]);
  }
  return num_arr;
}


public static void sortArray(int[] str)
{
  //排序的静态方法
  Arrays.sort(str);
}


public static String toString(int[] str)
{

  //1.5版本后的新功能,存放字符串的容器
  StringBuilder sb=new StringBuilder();

  for(int x=0;x<str.length();x++)
  {
   if(x!=str.length();x++)
    sb,append(str[x]+" ");
   else
    sb.append(str[x]);
  }

  return sb.toString();
}
}


回复 使用道具 举报
来男. 发表于 2014-5-1 10:31
我认为将几个典型案例弄会就可以了,不懂的点看视频(例如:for(int y=0,z=min.length()-i;z!=min.length()+ ...

4个练习,我只看懂了第一个练习,其他的没看懂
回复 使用道具 举报
本帖最后由 张然龙 于 2014-5-1 11:33 编辑

哈哈 我刚发的帖子!  再给你copy一份!首先 你要理解所有的函数的用法吧?
我这个很详细哦 ,首先要把所有的函数记住

代码如下↓

  1. class Demo2
  2. {
  3.         static void sop(Object a,int b)
  4.         {
  5.                 System.out.println("这是第"+b+"个:  "+a);
  6.                
  7.         }
  8.         public static void main(String[] args)
  9.         {
  10.                 char a[]={'1','2','3','4','5','6','7','8','9'};
  11.                 String b="123456789";
  12.                
  13.                 //1.将字符数组转换成字符串,从3坐标开始,到4坐标结束
  14.                 sop(new String (a,3,2),1);
  15.                
  16.                
  17.                 //2.获取字符串长度
  18.                 sop(b.length(),2);
  19.                
  20.                
  21.                 //3.返回2角标的char类型字符
  22.                 sop(b.charAt(2),3);
  23.                
  24.                
  25.                 //4.返回1在字符串中第一次出现的位置
  26.                 sop(b.indexOf('1'),4);//查找字符
  27.                 sop(b.indexOf("1"),4);//查找字符串
  28.                
  29.                
  30.                 //5.返回1在字符串中第一次出现的位置,从指定角标开始
  31.                 sop(b.indexOf('1',1),5);//查找字符,没找到返回-1
  32.                 sop(b.indexOf("1",1),5);//查找字符串,没找到返回-1
  33.                
  34.                
  35.                 //6.反向查找,1在字符串中第一次出现的位置
  36.                 sop(b.lastIndexOf('1'),6);//反向查找字符
  37.                 sop(b.lastIndexOf("1"),6);//反向查找字符串
  38.                
  39.                
  40.                 //7.判断是否以指定内容开头结尾,判断是否包含指定内容
  41.                 sop(b.startsWith("123"),7);//判断开头
  42.                 sop(b.endsWith("789"),7);//判断结尾
  43.                 sop(b.contains("456"),7);//判断是否包含
  44.                
  45.                
  46.                 //8.判断字符串内容是否为空
  47.                 sop(b.isEmpty(),8);
  48.                
  49.                
  50.                 //9.判断字符串是否相等,和忽略大小写判断
  51.                 sop(b.equals("123456789"),9);// 可以传字符串,也可以传字符
  52.                 sop("ABC".equalsIgnoreCase("abc"),9);// 可以传字符串,也可以传字符
  53.                
  54.                
  55.                 //10.将基本数据类型转换为字符串类型
  56.                 sop(String.valueOf(true),10);
  57.                
  58.                
  59.                 //11.将字符数组转换为字符串类型,从2角标开始,到4角标结束
  60.                 sop(new String(a,2,3),11);//最后一个Int型参数是控制传入的个数,而不是角标
  61.                
  62.                
  63.                 //12.将字符串转换为字符数组
  64.                 sop(b.toCharArray(),12);//打印的是字符串数组的地址。。
  65.                
  66.                
  67.                 //13.将字符类型的'1'替换成'5'
  68.                 sop(b.replace('1','5'),13);
  69.                
  70.                
  71.                 //14.将字符串"123"替换成"444"
  72.                 sop(b.replace("123","444"),14);
  73.                
  74.                
  75.                 //15.返回指定范围的字符串,从2角标开始,到结尾
  76.                 sop(b.substring(2),15);
  77.                
  78.                
  79.                 //16.返回指定范围的字符串,从2角标开始,四角标结束
  80.                 sop(b.substring(2,5),16);//含头不含尾
  81.                
  82.                
  83.                 //17.去除字符串开头和结尾中的空格
  84.                 sop("   123   ".trim(),17);
  85.                
  86.                
  87.                 //18.将字符串换成大写的,或者小写的
  88.                 sop("abcde".toUpperCase(),18);//换成大写的
  89.                 sop("ABCDE".toLowerCase(),18);//换成小写的
  90.                
  91.                
  92.                 //19.比较两个字符串的大小
  93.                 sop("aaa".compareTo("acdfdf"),19);//从0角标开始遍历,直到出现第一个不同的字符为止,返回的是前方的数值减去参数中的数值
  94.                
  95.                
  96.                 //20.比较两个字符串的大小 (忽略大小写)
  97.                 sop("aaa".compareToIgnoreCase("AAA"),20);//同上方函数,忽略大小写
  98.                
  99.         }
  100. }
复制代码



回复 使用道具 举报
张然龙 发表于 2014-5-1 11:31
哈哈 我刚发的帖子!  再给你copy一份!首先 你要理解所有的函数的用法吧?
我这个很详细哦 ,首先要把所有 ...

哥们 谢谢你噢 辛苦了   你是个好人
回复 使用道具 举报
我为你着迷 发表于 2014-5-1 13:37
哥们 谢谢你噢 辛苦了   你是个好人

嘿嘿 太客气了 我都不好意思了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马