
正文
java组合类代码实现 java组合编程
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
输入任意字符序列,输出所有两位数的排列组合JAVA代码?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 创建Scanner对象,用于获取用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入任意字符序列:");
// 获取用户输入的字符序列
String str = scanner.nextLine();
// 循环遍历字符序列中的每个字符
for (int i = 0; i str.length(); i++) {
// 获取字符序列中的第i个字符
char c1 = str.charAt(i);
// 循环遍历字符序列中的每个字符
for (int j = 0; j str.length(); j++) {
// 获取字符序列中的第j个字符
char c2 = str.charAt(j);
// 如果第i个字符不等于第j个字符,则输出它们的排列
if (i != j) {
System.out.println(c1 + "" + c2);
}
}
}
}
}
相关问答
Q1: java实现排列组合输出
完成java组合类代码实现了一种实现java组合类代码实现,发给你参考下。
不过感觉应该还有更好的办法java组合类代码实现,有时间java组合类代码实现我会继续研究下.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestQiuhe {
//集合a{1java组合类代码实现,2,3,5,7,10},输出不多于4个元素(不重复)的加和为22的组合。
public static void main(String[] args) {
int[] nums={1,2,3,5,7,10};
int l = nums.length;
Listint[] results=new ArrayListint[]();
for(int i1=0;i1l;i1++){
for(int i2=0;i2l;i2++){
if(nums[i1]==22){
results.add(new int[]{nums[i1]});
}
if(i2!=i1){
if(nums[i1]+nums[i2]==22){
results.add(new int[]{nums[i1],nums[i2]});
}
for(int i3=0;i3l;i3++){
if(i3!=i1 i3!=i2){
if(nums[i1]+nums[i2]+nums[i3]==22){
results.add(new int[]{nums[i1],nums[i2],nums[i3]});
}
for(int i4=0;i4l;i4++){
if(i4!=i1 i4!= i2 i4!=i3){
if(nums[i1]+nums[i2]+nums[i3]+nums[i4]==22){
results.add(new int[]{nums[i1],nums[i2],nums[i3],nums[i4]});
}
}
}
}
}
}
}
}
//去重
SetString reSet=new HashSet();
for(int[] r:results){
Arrays.sort(r);
reSet.add(Arrays.toString(r));
}
System.out.println("一共得到结果集:"+reSet.size());
System.out.println(reSet);
}
}
运行结果:
一共得到结果集:2
[[5, 7, 10], [2, 3, 7, 10]]
Q2: 求java实现String list[] = { "1", "2", "3" }; 的排列组合代码
楼上的代码好复杂...其实几个循环就可以了,用不着那么多if判断
import java.util.ArrayList;
public final class SpecialStringSorter {
public static String[] sort(String[] list){
ArrayListString outbuilder=new ArrayListString();
if(list.length2) throw new RuntimeException();//如果list长度小于2会抛出运行时异常(你想换掉就换掉,比如说返回本身)
for(int a=2;a=list.length;a++){ //这一层循环是迭代输出括号里的元素数(a代表输出中的[]里的元素数),不断增加
for(int b=0;b=list.length-a;b++){ //这一层循环是迭代输出括号里的开头数
for(int c=b+1;c=list.length-a+1;c++){//这一层循环是第二个数
StringBuilder sb=new StringBuilder("[");
sb.append(list[b]);
sb.append(","+list[c]);
for(int d=1;da-1;d++){ //这一层循环是一个[]内容的生成循环
sb.append(","+list[c+d]);
}
sb.append("]");
outbuilder.add(sb.toString());
}
}
}
String[] result=new String[outbuilder.size()];
int i=0;
for(Object resultBuilder:outbuilder){
result[i]=(String)resultBuilder;
i++;
}
return result;
}
public static void main(String[] args){
String[] test={
"1","2","3","4"
};
String[] sortResult=sort(test);
for(String out:sortResult){
System.out.print(out);
}
}
}
Q3: Java如何实现动态的组合, Thinking in Java 这本书中 说过 动态的组合就是聚合, 谁能给我举个简单例子?
在面向对象中,类与类之间的关系有泛化,依赖,关联,聚合,组合几种。
其中,聚合和组合都属于关联。
在具体编程中:
依赖表现为如果A类依赖于B,则B体现为A的局部变量,方法参数或静态方法的调用。
eg:
class B{
Static void function1(){};
void function2(){};
}
public class A{
public static void main(String[] args){
....
B.function1();//A类中调用了B类的静态方法
....
}
}
聚合和组合都属于关联,很难区分,但是只要记住一点,区分它们就容易多了:
处于聚合关系的两个类生命周期不同步,则是聚合关系;处于组合关系的两个类的生命周期同步;
eg:
聚合关系,当A创建的时候,B不一定创建;当A消亡时,B不一定消亡。
class A{
private B;
}
class B{
....
}
组合关系,当创建一个A对象时,也会创建一个B对象;当A对象消亡时,作为A的属性的B对象也会消亡。
class A{
private b=new B();
....
}
class B{
....
}
Q4: 求解释一段代码,关于Java中排列组合的问题
ArrayListCharacter
newblist=new
ArrayListCharacter(blist);
是用blist的值创建一个新的ArrayList
如果
newblist
=
blist;这样,那两个ArrayList使用的是同一个引用,操作一个会影响另一个。
------------------------------------------------------------------------------------------------------------------------
这个代码的递归思想是这样的。
alist是数据,blist是结果
循环alist,创建出一个newalist备份,将alist中的一个元素添加到newblist.add(alist.get(i));中,
并在newalist中删除。
将这两个新的对象递归下去。
[1,2,3]
[]
[2,3]
[1]
[3]
[1,2]
--------------------
递归使用的是新创建的list
所以方法结束后,对alist,blist没有影响
[2,3]
[1]
[2]
[1,3]
Q5: 用java代码实现组合模式
重载wolf1的构造函数使其接受一个animal的实例,是为了外界代码传入animal实例,方便调用。如果你直接new一个animal实例的话,在实际开发中一般都不现实,因为这样就写死了,如果animal实例类中还有很多数据字段(比如从数据库中加载)的话
关于java组合类代码实现和java组合编程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





