Java字符串练习题

目录

  • 1、"a"+"b"+"c"+"d"+"e"+"f"+"g"+"h"改写上面的代码,打印结果
  • 2、给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成
    • 第一种:
    • 第二种:
  • 3、给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.
  • 4、给定一个由数字组成的字符串,如:"1239586838923173478943890234092",统计出每个数字出现的次数
    • 第一种:
    • 第二种:
  • 5、给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次?
  • 6、字符编码 "aaaaaaabbbbbcerrrrggggggggsssssspoqqqqq"==> "a7b5cer4g8s6poq5"

1、"a"+"b"+"c"+"d"+"e"+"f"+"g"+"h"改写上面的代码,打印结果

package work1;

public class Work1 {
	public static void main(String[] args) {
		StringBuffer s = new StringBuffer();
		s= s.append("a");
		s= s.append("b");
		s= s.append("c");
		s= s.append("d");
		s= s.append("e");
		s= s.append("f");
		s= s.append("g");
		s= s.append("h");
		System.out.println(s);
	}
}

2、给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成

Java中随机数的生成:

java.util.Random r = new java.util.Random();

int a = r.nextInt(100): a 0-99的随机数

第一种:
package work2;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class Work2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Random r = new Random();

		System.out.println("请输入生成字符串的长度");
		int length = sc.nextInt();

		String s = "";
		for(int i = 0;i<length;i++){
			int random = r.nextInt(2);
			if(random==1){
				int num = r.nextInt(10);//随机产生数字
				s=s+s.valueOf(num);
			}
			else {
				int randomChar = r.nextInt(2);
				if(randomChar==1){//随机产生大写字母
					char str =(char)(r.nextInt(26)+‘A‘);
					s=s+s.valueOf(str);
				}
				else{//随机产生小写字母
					char str =(char)(r.nextInt(26)+‘a‘);
					s=s+s.valueOf(str);
				}
			}
		}
		System.out.println(s);
	}
}

第二种:
package work2;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class Work2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Random r = new Random();

		System.out.println("请输入生成字符串的长度");
		int length = sc.nextInt();

		//创建一个集合存储大写小写字母以及数字
		List<Character> list = new ArrayList<Character>();
		for(char c =‘A‘;c<=‘Z‘;c++)
			list.add(c);
		for(char c =‘a‘;c<=‘z‘;c++)
			list.add(c);
		for(char c =‘0‘;c<=‘9‘;c++)
			list.add(c);

		String s = "";//保存结果
		for(int i = 0;i<length;i++){
			//随机获取字符下标
			int a = r.nextInt(list.size());
			s = s+list.get(a);
		}
        //打印
		System.out.println(s);

	}
}

3、给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.

如:"abcd23abc34bcd"中,"bc"子串的出现位置为: 1,7,11.字符串和子串均由用户输入

package work3;

import java.util.Scanner;

public class Work3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符串");
		String s1 = sc.next();
		System.out.println("请输入子串");
		String s2 = sc.next();

		int index =0;
		while((index=s1.indexOf(s2, index))!=-1){
			System.out.print(index+" ");
			index = index +s2.length();
		}
	}
}

4、给定一个由数字组成的字符串,如:"1239586838923173478943890234092",统计出每个数字出现的次数

第一种:
package work4;

import java.util.Scanner;

public class Work4 {
	public static void main(String[] args) {
		String s = "1591231231231326560686464506565791310665979803";
		int[] count = new int[10];
		for(int i=0;i<10;i++){
			String s1 = s;
			int index=0;
			while(true){
				index = s1.indexOf(String.valueOf(i));
				if(index!= -1){
					s1=s1.substring(index+1);//截取字符串
					count[i]++;
				}
				else break;
			}
		}
		for (int i=0;i<count.length;i++) {
			System.out.println(i+" 出现的次数 "+count[i]);
		}
	}
}
第二种:
package work4;

import java.util.Scanner;

public class Work4 {
	public static void main(String[] args) {
		String s = "1591231231231326560686464506565791310665979803";

		int[] arr = new int[10];//创建数组记录次数
		for(int i =0;i<s.length();i++){
			arr[s.charAt(i)-‘0‘]++;
		}
		//遍历
		for (int i=0;i<arr.length;i++) {
			System.out.println(i+"的次数是"+arr[i]);
		}
	}
}

5、给定一个字符串,请输出该字符串由哪些字符组成,每个字符出现几次?

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Work5 {
	public static void main(String[] args) {
		String s ="s13fs54fas87f8sf40";

		Map<Character, Integer> map = new HashMap<Character, Integer>();//一个key值对应一个value

		for(int i=0;i<s.length();i++){
			Character c =s.charAt(i);
			if(map.get(c)==null)//第一次加入到map集合
				map.put(c, 1);
			else
				map.put(c, map.get(c)+1);

		}
		Set<Character> keySet = map.keySet();
		for (Character character : keySet) {
			System.out.println(character+"----"+map.get(character));
		}
	}
}

6、字符编码 "aaaaaaabbbbbcerrrrggggggggsssssspoqqqqq"==> "a7b5cer4g8s6poq5"


public class Work6 {
	public static void main(String[] args) {
		String str = "aaaaaaabbbbbcerrrrggggggggsssssspoqqqqq";
		StringBuilder sb = new StringBuilder("");

		char current = str.charAt(0);
		int count = 1;

		for(int i = 1 ; i < str.length() ; i++){
			char c = str.charAt(i);
			if (c == current){
				count++;
			}
			else{
				if (count == 1) sb.append(current);
				else sb.append(current).append(count);

				current = c;
				count = 1;

			}
		}
		if (count == 1) sb.append(current);
		else sb.append(current).append(count);

		System.out.println(sb.toString());
	}
}

原文地址:https://www.cnblogs.com/shellxx/p/12578522.html

时间: 03-27

Java字符串练习题的相关文章

Java字符串学习笔记

通过看jdk源码发现Java字符串中有如下关系: 接口中的方法默认都是抽象的可以写也可以不写. public interface CharSequence { int length(); char charAt(int index); CharSequence subSequence(int start, int end); public String toString(); } 其他的都是该接口的实现类且是最终类,不能被继承. public final class String impleme

Java字符串

Java字符串 String对象是不可变的.String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的对象,以包含修改后的字符串.而最初的String对象则丝毫未动. import java.util.*; public class Immutable{ public static String upcase(String s){ return s.toUpperCase(); } public static void main(String[] args){ Strin

Java字符串转16 进制工具类Hex.java

原文:Java字符串转16 进制工具类Hex.java 源代码下载地址:http://www.zuidaima.com/share/1550463378410496.htm Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后再将 md 之后的数据 hex 一下. 这个工具类,就是实现此效果的. /* * */ package com.zuidaim

图解Java字符串不变性

1. 声明字符串 String s = "abcd"; 这里,s存储了“abcd”在这个字符串对象的引用,如下图所示: 2. 将字符串变量s赋值给字符串变量s2 String s2 = s; 此时,s2也指向了“abcd”. 3. 字符串合并 s = s.concat("ef); 这里,明显是新创建了字符串对象“abcdef”,也就是说,在java中字符串对象一旦被创建就不会改变. 总结 在Java中,一旦一个字符串对象在内存中(通常在堆中)被创建,它就不会被改变.同时字符串

Java字符串常见实例与函数

字符串比较 字符串函数 compareTo (string) ,compareToIgnoreCase(String) 及 compareTo(object string) 来比较两个字符串,并返回字符串中第一个字母ASCII的差值. public class StringCompareEmp{ public static void main(String args[]){ String str = "Hello World"; String anotherString = "

Java字符串的10大热点问题,你都懂吗?

转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符串,应该用”==”还是equals()? 总的来说,”==”是用来比较字符串的引用地址,而equals()才是比较字符串的值.两个值相同的字符串用”==”比较结果有可能是false,而用equals()则一定为true.除非两个字符串是同一个new出来的对象,不然比较字符串值是否相同应该要用equa

JAVA字符串格式化-String.format()的使用(转)

常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形式. format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串. format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参

关于Java字符串的几个重点

String.StringBuilder和StringBuffer哪个更优? String和StringBuilder:StringBuilder是可变的,也就是说用StringBuilder创建的字符串你可以随时改变它.StringBuilder和StringBuffer:StringBuffer是同步的,它是线程安全(thread-safe)的,但效率要比StringBuilder差得多. 如何重复输出字符串? 在Python中,我们只需要为字符串乘上一个数字就可以重复输出该字符串了.然而在

深入Java字符串

深入Java字符串 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 一.从根本上认识java.lang.String类和String池 首先,我建议先看看String类的源码实现,这是从本质上认识String类的根本出发点.从中可以看到: 1.String类是final的,不可被继承.public final class String. 2.String类是的本质是字符数组char[], 并且其值不可改变.pr

java 字符串内存分配的分析与总结

经常在网上各大版块都能看到对于java字符串运行时内存分配的探讨,形如:String a = "123",String b = new String("123"),这两种形式的字符串是存放在什么地方的呢,其实这两种形式的字符串字面值"123"本身在运行时既不是存放在栈上,也不是存放在堆上,他们是存放在方法区中的某个常量区,并且对于相同的字符串字面值在内存中只保留一份.下面我们将以实例来分析. 1.==运算符作用在两个字符串引用比较的两个案例: p