Java笔试题共23题(附答案)
更新时间:2024-06-29 23:44:01 阅读量: 综合文库 文档下载
- Java笔试题推荐度:
- 相关推荐
\★里面有解题思路一样的没有全部解答,仅仅将题目列出,稍微改变即可得出结果★ \笔试题重点, \1、复制文件 \2、多线程 \3、集合 \4、反射
///////////////////////////////////////////////////////////////////// \/*
Collection集合体系图 Collection |----List 元素有序,可重复 |----ArrayList 底层数据结构是数组,查询快,增删慢,线程不安全,效率高 |----Vector 底层数据结构是数组,查询快,增删慢,线程★安全★,效率低 |----LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高 |----Set 元素无序,唯一。 |----HashSet |----TreeSet
遍历集合的两种方式: 1、通过获取键的集合,遍历键的集合,通过键获取值 2、通过键值对集合,遍历键值对对象,分别取得键值 */
import java.util.HashMap; import java.util.Set;
import java.util.Map.Entry; import java.util.Map; class ForMap { public static void main(String[] args) { //创建一个map对象 HashMap
//向map中添加元素 map.put(\map.put(\map.put(\map.put(\//获取键的集合
Set
//通过键获取值 System.out.println(str+\}
System.out.println(\
//获取map的键值对集合
Set
for(Entry
//用键值对对象分别获取键和值 System.out.println(me.getKey()+\ } System.out.println(\ } }
//////////////////////////////////////////////////////////////////// \/*
题目1: 创建ArrayList对象,添加5个元素,使用Iterator遍历输出。*/
\/*题目2: 两个集合{“a”,“b”,“c”,“d”,“e”}和{“d”,“e”,“f”,“g”,“h”}, 把这两个集合去除重复项合并成一个 思路: 这道题主要是考察集合的知识的,可以用ArrayList解决问题 1、先创建这两个集合 2、向这两个集合分别添加元素 3、用第二个集合的调用iterator()方法获取Iterator对象 4、遍历第二个集合,并用第一个集合判断是否包含第一个 集合的元素,如果不包含就向集合一添加元素 5、打印集合1,就是想要的结果 */ //导包
import java.util.List;
import java.util.ArrayList; import java.util.Iterator;
class Test { public static void main(String args[]) { //创建集合1 List
list1.add(\list1.add(\list1.add(\list1.add(\list1.add(\
//创建集合2
List
//获取集合2的迭代器 Iterator it = list2.iterator(); //遍历集合2 while(it.hasNext()) { String str = (String) it.next(); //如果不包含就向集合1添加此元素 if(!list1.contains(str)) { list1.add(str); } } System.out.println(list1); } }
///////////////////////////////////////////////////////////////////// \/*
题目: 已知文件a.txt文件中的内容为“bcdeadferwplkou”,请编写程序读取该文件内容, 并按照自然排序顺序后输出到b.txt文件中。即b.txt文件内容应为\这样的顺序 思路: 1、先将a.txt文件内容读取出来并存到字符数组中 2、用Arrays.sort(字符数组) 将这个字符数组排序 3、将字符数组输出到b.txt文件中 */
import java.io.IOException; import java.io.File;
import java.io.BufferedReader; import java.io.BufferedWriter;
import java.io.FileReader; import java.io.FileWriter; import java.util.Arrays;
class ReadFileAndSortString { public static void main(String args[]) throws IOException { //封装数据源及目的地File File a = new File(\ File b = new File(\
//高效字符输入流得到数据源
BufferedReader br = new BufferedReader(new FileReader(a)); //高效字符输出流得到目的地
BufferedWriter bw = new BufferedWriter(new FileWriter(b)); String line =null; //循环读取文件
while((line = br.readLine())!=null) { //得到读取一行字符串的长度 int len = line.length(); char[] chrs = new char[len]; //转换成字符数组 chrs = line.toCharArray(); //通过Arrays的sort方法排序 Arrays.sort(chrs); }
System.out.println(\字符串:\//写到文件中 bw.write(chrs); bw.newLine(); //刷新缓冲区 bw.flush();
//关闭资源 br.close(); bw.close();
System.out.println(\复制成功\ } }
///////////////////////////////////////////////////////////////////// \/*
题目: 编写一个程序, 将指定目录下所有.java文件拷贝到另一个目录中, 并将扩展名改为.txt
思路: 1、用File对象封装目录 2、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组 3、遍历这个File数组,得到每一个File对象 4、判断该File对象是否是文件 a、如果是文件 b、继续判断是否以.java结尾 是:先改名后复制文件 否:不复制 */
//导包
import java.io.IOException; import java.io.File;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; class Test { public static void main(String[] args) throws IOException { //用File对象封装目录 File srcfile = new File(\ //用File对象封装目录 File destFile = new File(\
//调用复制的方法 copyFile(srcfile,destFile); }
//复制方法
public static void copyFile(File srcFile, File destFile) throws IOException { //通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组 File[] fileArray = srcFile.listFiles(); //遍历这个File数组,得到每一个File对象 for(File file : fileArray) { //判断该File对象是否是文件 if(file.isFile()) { //如果不是以java为后缀的不复制,执行下次循环 if(!file.getName().endsWith(\ { continue; }
//新文件File对象//复制前改名 File newFile = new File(destFile,file.getName().replace(\ //用高效的字节输入流封装数据源 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
//用高效的字节输出流封装目的地 BufferedOutputStream bos = FileOutputStream(newFile)); byte[] bys= new byte[1024]; int len = 0;
//判断是否读到文件结尾
while( (len = bis.read(bys)) != -1 ) {
new
BufferedOutputStream(new
//将数据写到文件中 bos.write(bys,0,len); //刷新缓存流 bos.flush(); } //关闭流对象 bis.close(); bos.close(); } } } }
/////////////////////////////////////////////////////////// \/*
题目1: 将项目路径下java_all目录下所有的.java文件复制到项目路径下Java_jad 文件夹下,并将文件名从原来的.java修改成.jad*/
\/*题目2: 编写一个程序,把一个目录里边的所有带.java文件拷贝到另一个目录中, 拷贝成功后,把后缀名是.java的文件改为.txt文件。(注意事项:是先拷贝, 拷贝成功后才可以改后缀名的)*/ \★将以下代码改改路径和扩展名即可★) /* 思路: 1、用File对象封装目录 2、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组 3、遍历这个File数组,得到每一个File对象 4、判断该File对象是否是文件 a、如果是文件
*/
b、继续判断是否以.java结尾 是:复制文件 在复制完成后改名 否:不复制
//导包
import java.io.IOException; import java.io.File;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; class FileCopySingleFolderByByte { public static void main(String[] args) throws IOException {
//用File对象封装目录
File srcfile = new File(\//用File对象封装目录
File destFile = new File(\
//调用复制的方法 copyFile(srcfile,destFile); } //复制方法 public static void copyFile(File srcFile, File destFile) throws IOException { //通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组 File[] fileArray = srcFile.listFiles(); //遍历这个File数组,得到每一个File对象 for(File file : fileArray) { //判断该File对象是否是文件 if(file.isFile()) { //如果不是以java为后缀的不复制,执行下次循环 if(!file.getName().endsWith(\ { continue; } //新文件 File newFile = new File(destFile, file.getName()); //用高效的字节输入流封装数据源 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
//用高效的字节输出流封装目的地 BufferedOutputStream bos = FileOutputStream(newFile)); byte[] bys= new byte[1024]; int len = 0;
//判断是否读到文件结尾
while( (len = bis.read(bys)) != -1 ) { }
//将数据写到文件中 bos.write(bys,0,len); //刷新缓存流 bos.flush();
new BufferedOutputStream(new
//关闭流对象 bis.close(); bos.close();
//得到新文件名
String newName = newFile.getName().replace(\//根据新文件名创建新文件对象
File tempFile = new File(destFile,newName);
//改名 newFile.renameTo(tempFile); } } } }
///////////////////////////////////////////////////////////////////// \/*
题目: 统计一个文件夹下的txt文件个数,包括所有子文件夹内, 并将它们全部复制到D盘任意目录下 思路: (★提示★)用高效字节流可以用来复制任意类型文件 1、定义一个统计变量 2、用File对象封装目录 3、通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组 4、遍历这个File数组,得到每一个File对象 5、判断该File对象是否是文件夹 a、如果是文件夹回到第3步 b、继续判断是否以.txt结尾 是:复制文件并将统计文件变量加1 否:不复制 */
//导包
import java.io.IOException; import java.io.File;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; class FileCopyMultiFolderByByte {
//用来统计复制文件的总个数 public static int count =0;
public static void main(String[] args) throws IOException {
//用File对象封装目录
File srcfile = new File(\//用File对象封装目录
File destFile = new File(\
//调用复制的方法 copyFolder(srcfile,destFile); System.out.println(\文件复制完毕,共复制文件 \个\}
//复制方法
public static void copyFolder(File srcFile, File destFile) throws IOException {
//通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组 File[] fileArray = srcFile.listFiles();
//遍历这个File数组,得到每一个File对象 for(File file : fileArray) { //判断该File对象是否是文件夹 if(file.isDirectory()) {
//多级目录递归 copyFolder(file,destFile); } else { //文件 File newFile = new File(destFile, file.getName()); copyFile(file , newFile); } } }
//复制文件并计数的方法
public static void copyFile(File srcFile, File newFile) throws IOException { //如果不是以txt为后缀的不复制,跳出循环 if(!srcFile.getName().endsWith(\ {
continue; }
//统计文件个数的变量加1 count++;
//用高效的字节输入流封装数据源 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); //用高效的字节输出流封装目的地 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); byte[] bys= new byte[1024]; int len = 0;
//判断是否读到文件结尾
while( (len = bis.read(bys)) != -1 ) { //将数据写到文件中 bos.write(bys,0,len); //刷新缓存流 bos.flush(); }
//关闭流对象 bis.close(); bos.close(); } }
///////////////////////////////////////////////////////////////////// \/*
题目: 创建多线程的方式有几种?请代码实现 解答: 一共两种。 1、通过实现Runnable接口,重写run()方法 2、通过继承THread类,重写run()方法。 */ //
class ThreadTest { public static void main(String [] args)
}
{ }
//创建RunnableImpl类对象
RunnableImpl ri = new RunnableImpl();
//创建Thread类的对象,并把ri作为参数传递 Thread t1 = new Thread(ri); //给线程设置名字
t1.setName(\线程\//启动线程 t1.start();
//创建ThreadImpl类对象
ThreadImpl ti = new ThreadImpl(); ti.setName(\线程\//启动线程 ti.start();
//1、通过实现Runnable接口,重写run()方法 class RunnableImpl implements Runnable { @Override public void run() { }
}
System.out.println(Thread.currentThread() .getName()+\正在执行任务\
//2、通过继承THread类,重写run()方法。 class ThreadImpl extends Thread { @Override public void run() { System.out.println(getName()+\正在执行任务\ } }
///////////////////////////////////////////// \/*
题目: 定义一个类实现Runnable接口,卖票100张,四个线程,输出格式为“窗口1,还剩10张票” ,指定窗口3卖第10张票。 思路: 1、定义一个资源类实现Runnable接口 2、资源类重写run()方法,并加锁卖票
3、在测试类中创建线程并启动 */
class SellTicket { public static void main(String[] args) { //创建一个资源对象 Tickets ticket = new Tickets();
//创建线程对象并传入资源对象 Thread t1 = new Thread(ticket); Thread t2 = new Thread(ticket); Thread t3 = new Thread(ticket); Thread t4 = new Thread(ticket);
//设置线程名称 t1.setName(\窗口1\ t2.setName(\窗口2\ t3.setName(\窗口3\ t4.setName(\窗口4\ //启动线程 t1.start(); t2.start(); t3.start(); t4.start(); } }
class Tickets implements Runnable { private int ticket = 100; @Override public void run() { while(true) { //加锁 synchronized(this) { //剩余票数不大于0就退出循环 if(ticket > 0) { try { Thread.sleep(100); } catch (InterruptedException e)
{ e.printStackTrace(); } //让窗口3卖第十张票 if(ticket == 10) { if(!Thread.currentThread().getName().equals(\窗口3\ { continue; } } System.out.println(Thread.currentThread().getName()+\还( --ticket )+\张票\ } else { break; } } } } }
//////////////////////////////////////////////////////// \/*
剩\
写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法, 用for循环创建5个线程对象。需求如下:
① 利用线程类的构造函数输出:\创建线程4\。
(备注:当创建一个线程的时候,标记为1,再次创建一个线程的时候,标记为2, 所以输出的\创建线程4\就是创建的第四个线程) ② 在run方法中输出:“线程X :计数Y”,当执行次数达到6次的时候,退出。 (备注:其中“线程X”为第X个线程,“计数Y”为该线程的run方法执行了多少次) */
class SellTicket { public static void main(String[] args) { //用for循环创建5个线程对象 for(int i = 1; i <= 5 ;i ++) { new Thread(new MyThread (i) ).start(); } } }
class MyThread implements Runnable { private int count; public MyThread(){} public MyThread(int count) { this.count = count;
System.out.println(\创建线程\ } @Override public void run() { for(int i = 1 ; i <=6; i++) { System.out.println(\线程\计数\ } } }
/////////////////////////////////////////////////////////// \/*
题目: 编写一个Java程序实现多线程,在线程中输出多线程名字,隔300毫秒输出一次, 共输出20次。 思路: 1、用实现Runnable接口并重写run方法 2、创建线程 */
class Test { public static void main(String[] args) { //创建线程对象 Thread t1 = new Thread(new MyThread () ); Thread t2 = new Thread(new MyThread () ); //设置线程名称 t1.setName(\我是线程1\ t2.setName(\我是线程2\ //启动线程 t1.start(); t2.start(); } }
//实现Runnable接口
class MyThread implements Runnable { @Override public void run() { //循环20次 for(int i = 1 ; i <=20; i++) { try { //休眠300毫秒 Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); }
//打印线程名称 System.out.println(\线程名称:\ } } }
///////////////////////////////////////////////////////////////////// \/*
题目: 输出一个字符串,怎样判断是否是aba,abcba,abffba,的字符串 思路: 1、首先判断是奇数个还是偶数个(字符串的长度%2,1为基数,0为偶数) 2、是0就是偶数个 //得到前半部分子字符串 字符串.substring(0,字符串的长度/2 ) //得到前后半部分子字符串 字符串.substring(字符串的长度/2 ,字符串的长度 ) 字符串.toCharArray()分别得到两个字符数组 在循环字符数组 一个正序一个倒序的 用对比字符是否equals 3、是1就是奇数个 //得到前半部分子字符串 字符串.substring(0,字符串的长度/2 ) //得到前后半部分子字符串 字符串.substring(字符串的长度/2+1 ,字符串的长度 ) 字符串.toCharArray()分别得到两个字符数组
*/
import java.util.Scanner;
class StringDemo { public static void main(String[] args) { while(true) { show(); } } public static void show() {
System.out.print(\请输入要判断的字符串:\Scanner sc = new Scanner(System.in); String line = sc.nextLine();
System.out.println(\你输入的是:\int length = line.length();
//先判断字符串的字符个数是奇数还是偶数 //偶数时
if(length%2==0) { //截取成前后两个子字符串 String s1 = line.substring(0,length/2);
String s2 = line.substring( length/2 , length); //注意偶数个和奇数个的不同在此://将两个字符串转换成字符数组
char[] chs1 = s1.toCharArray(); char[] chs2 = s2.toCharArray(); int chsLength = chs1.length;
//统计对比次数和数组长度一致就是符合,否则不符合 int count = 0; //遍历数组
for(int i = 0 ; i < chsLength; i++) { //对比字符是否相同 if(chs1[ i ] !=chs2[ chsLength - i - 1 ]) { System.out.println(\这个字符串不符合aba\ break; } //统计对比次数 count ++;
偶数不加1
} } else {
if(count == chsLength ) { System.out.println(\符合aba\}
//截取成前后两个子字符串
String s1 = line.substring(0,length/2);
String s2 = line.substring( length/2 + 1, length); //注意偶数个和奇数个的不同在此:奇数加1 //将两个字符串转换成字符数组 char[] chs1 = s1.toCharArray(); char[] chs2 = s2.toCharArray(); int chsLength = chs1.length;
//统计对比次数和数组长度一致就是符合,否则不符合 int count = 0; //遍历数组
for(int i = 0 ; i < chsLength; i++) { //对比字符是否相同 if(chs1[i] !=chs2[chsLength-i-1]) {
}
System.out.println(\这个字符串不符合aba\break;
//统计对比次数 count ++; if(count == chsLength ) { System.out.println(\符合aba\ } } } } }
//////////////////////////////////////////////////// \/*
题目: 如何用反射创建一个对象。用两种方式,要求写代码 思路:
一共有三种方式 1、调用Object类的getClass()方法 2、数据类型的静态的class属性 3、通过Class类的静态方法forName(String className) (注意:使用这种方式的时候要用全路径名) */
import java.lang.reflect.Constructor; class Test { public static void main(String[] args) throws Exception {
//第一种:获取字节码文件对象
Class> c1 = Class.forName(\
//获取构造器对象
Constructor> con1 = c1.getConstructor(String.class,int.class); //创建对象
con1.newInstance(\张三\//第二种:获取字节码文件对象 Class
//获取构造器对象
Constructor
//创建对象 con2.newInstance(\李四\ } }
//用来测试反射的类 class Person { private String name; private int age; public Person(){}; public Person(String name,int age) { this.name = name; this.age = age; System.out.println(name+\ } }
////////////////////////////////////////////////////// \/*
题目:
编写一个类,增加一个实例方法,用于打印一条字符串, 并使用反射手段创建该类的对象,并调用对象的方法。 思路: 1、通过Class.forName()方法获取字节码文件对象 2、获取构造器对象 3、创建对象 4、获取成员方法对象 */
import java.lang.reflect.Constructor; import java.lang.reflect.Method; class Test { public static void main(String[] args) throws Exception {
//获取字节码文件对象
Class> c = Class.forName(\//获取构造器对象
Constructor> con = c.getConstructor(); //创建对象
Object obj = con.newInstance();
//获取成员方法对象 Method m = c.getMethod( \ m.invoke(obj); } }
class Demo { public Demo(){} public void sayHello( ) {
System.out.println(\这是打印的方法\ } }
//////////////////////////////////////////////////////// \/*
题目: 编写程序,生成5个1至10之间的随机整数,存入一个List集合, 编写方法对List集合进行排序(自定义排序算法,禁用Collections.sort 方法和TreeSet),然后遍历集合输出。 思路: 1、用Math的random()方法生成五个随机整数 2、用ArrayList集合存储随机数
3、遍历ArrayList集合并对其排序 4、遍历输出 */
import java.util.ArrayList;
class Test { public static void main(String[] args) {
//创建ArrayList集合
ArrayList
//用循环的方式,生成五个随机整数并存入ArrayList集合中 for(int i = 0; i < 5; i ++) { //生成随机整数 int rand = (int)(Math.random() * 10 ) + 1; }
//向List集合添加元素 list.add(rand);
//冒泡排序,外层控制对比次数 for(int i = 0; i < list.size() - 1; i ++) { //内存控制比较过程 for(int k = 0;k < list.size() - i - 1; k ++) { //调整顺序 if(list.get(k) > list.get(k+1)) { int max = list.get(k); list.set( k ,list.get(k + 1)); list.set( k + 1 ,max); } } }
//遍历集合 for(int i = 0; i < list.size(); i ++) { System.out.println(list.get(i)); } } }
//////////////////////////////////////////////////////// \
/*
题目: 接收用户输入的一句英文,将其中的单词以反序输出。例如: “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(\
正在阅读:
Java笔试题共23题(附答案)06-29
弥漫性丘疹什么症状04-15
K12学习人教版小学语文第九册复习教案03-12
OWASP - The Top 10 Most Critical Web Application Security Risks 201005-10
教育心理学第3阶段江南大学练习题答案 共三个阶段,这是其中一个阶段,答案在最后。04-28
2017-2021年中国棚户区改造建设发展与供需预测09-06
我眼中的美景作文400字07-06
愉快的春假作文700字07-07
短版印刷工艺方案研究06-08
小学语文教学“读写一体化”可行性的探究01-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 试题
- 答案
- Java