/*
题目: 接收用户输入的一句英文,将其中的单词以反序输出。例如: “I love you” →\思路: 1、获取用户输入,调用String的split()方法用空格将其分割成 字符串数组 2、遍历这个字符串数组,通过StringBuffer构造方法,将 字符串数组转换成StringBuffer对象,并调用reverse() 方法, 将字符串倒序 3、通过String的构造方法再将StringBuffer对象转换成String 并输出该新字符串 */
import java.util.Scanner;
class Test { public static void main(String[] args) { //创建Scanner对象 Scanner sc = new Scanner(System.in); System.out.println(\请输入您要反序输出的一句英文:\ //获取控制台输入 String line = sc.nextLine();
//将其用空格分割成字符串数组 String[] lines = line.split(\
System.out.println(\反序输出的结果:\//遍历字符串数组
for(int i = 0; i < lines.length; i ++) {
//将数组中的字符串转换成StringBuffer对象 StringBuffer sb = new StringBuffer(lines[i]);
//通过StringBuffer对象的reverse()方法得到反序单词 String newStr = new String(sb.reverse()) ; //直接输出反序单词 System.out.print(newStr+\ } System.out.println(); } }
//////////////////////////////////////////////////////// \/*
题目:
编写一个可以获取文件扩展名的函数。形参接收一个文件名字符串,返回一个扩展字符串。 思路: 1、用String类的lastIndexOf(string s) 方法获取最后一个点的位置 2、根据用String的substring(开始索引,结束索引)取得扩展名 */
import java.util.Scanner;
class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println(\请输入文件名:\ String filename = sc.nextLine(); String extend = getExtend(filename); }
public static String getExtend(String filename) { //取得最后一个点的索引 int beginindex = filename.lastIndexOf(\ int endindex = filename.length();
//根据用String的substring(开始索引,结束索引)取得扩展名 String extend = filename.substring(beginindex + 1, endindex); return extend; } }
//////////////////////////////////////////////////////// \/*
题目: 用ArrayList存入Student自定义对象,Student类有name,age两个属性 按照age倒序排序。 思路: 1、创建ArrayList集合,并向集合中添加Student对象 2、新建一个Comparator比较器接口的实现类,重写compare方法, 按年龄倒序排序 3、调用Collections的sort方法传入Comparator比较器实现类 */
import java.util.ArrayList; import java.util.Iterator; import java.util.Collections; import java.util.Comparator; class Test
{ }
public static void main(String[] args) { //创建集合 ArrayList
//向集合中添加元素
list.add(new Student(\张三\list.add(new Student(\李四\list.add(new Student(\王二\
//调用Collections的sort方法进行排序 Collections.sort(list, new MyComparator()); //遍历集合
Iterator it=list.iterator(); while(it.hasNext()) { Student s=(Student)it.next(); System.out.println(\}
//实现了Comparator比较器接口的自定义类
class MyComparator implements Comparator
//标准学生类 class Student { private String name; private int age; Student(){} Student(String name,int age) { this.name=name; this.age=age; } // set和get方法 public void setName( String name )
{ this.name=name; } public String getName() { return this.name; } public void setAge( int age ) { this.age=age; } public int getAge() { return this.age; } }
//////////////////////////////////////////////////////// \/*
题目: 编程列出一个字符串的全部字符组合情况。原始字符串中没有重复字符。 例如: 原始字符串是“abc”,打印得到下列所有组合情况: “a” “b” “c” \ \ \ \ \ \ *思路:
*1,发现组合的最小长度是单个字符,且就是原始字符串的每个字符,而最长长度则和字符串一样
*2,每行新组合都是在前一行旧组合的基础上,将每个旧组合与原始字符串中每个不同字符单独组合一次,获得新组合
*3,新一行组合有多少个,无法马上确定,因为都是字符串,
* 所以可以先用StringBuilder接收每个新组合,最后再切割获得每个新组合 * */
public class Test {
public static void main(String[] args) { //调用方法,传入字符串 show(\ }
//编写方法,接收字符串
public static void show(String str){
//将原始字符串转成原始字符数组 char[] chs=str.toCharArray();
//获得原始字符串数组,即每个字符串只有一个字符 String[] strs=chsToStrs(chs);
//按指定格式输出原始字符串数组,即单个字符的组合情况 printString(strs);
//x为每行单个字符串的长度,第一行已经输出,所以从2开始,最长为原始字符串长度,循环输出每行组合
for(int x = 2;x<=str.length();x++){
//调用方法,传入 原始字符数组 和 前一次的字符串数组,获得新的字符串数组
strs=addChar(chs,strs);
//按指定格式输出新的字符串数组 printString(strs); } }
//定义方法,接收 原始字符数组 和 前一次的字符串数组,并返回新字符串数组 public static String[] addChar(char[] chs,String[] oldStrs){
//因为新字符数组长度暂时无法确定,也为了转换方便,所以使用StringBuilder来接收每个新字符串
StringBuilder sb=new StringBuilder(); //定义新字符串数组 String[] newStrs=null;
//外循环,遍历每个字符串数组 for(int x=0;x //内循环,遍历每个原始字符,将每个字符串把每个不同字符都单独添加一次 for(int y=0;y //判断字符串是否包含该字符,通过indexOf()的返回值>=0来确定已包含 if(oldStrs[x].indexOf(chs[y])>=0) //已包含该字符,则不操作,继续下次循环 continue; //不包含该字符,则添加该字符 String s=oldStrs[x]+chs[y]; //添加新字符串到StringBuilder对象并用','隔开 sb.append(s).append(','); } } //删除StringBuilder对象最后的一个',',并转成字符串,再将字符串按','切割,获得新字符串数组 newStrs=sb.deleteCharAt(sb.length()-1).toString().split(\