java 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?
//有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?
int[] num = new int[] {1, 2, 3, 4};
int[] kind = new int[50];
int count = 0;
for(int i = 0; i < num.length; i++) {
for(int j = 0; j < num.length; j++) {
for(int k = 0; k < num.length; k++) {
if(i == j || i == k || j == k) {
continue;
}
// System.out.println(num[i]*1000 + num[j]*100 + num[k]*10 + num[6-i-j-k]);
kind[count] = num[i]*1000 + num[j]*100 + num[k]*10 + num[6-i-j-k];
count++;
}
}
}
System.out.println();
count = 0;
while(count < 50 && num[count] != 0) {
System.out.println(kind[count]);
count++;
}
}
这个。。。为什么会出错,而且还是数组越界的错误呢。。。我这里明明写了count < 50来防止超过数组元素的个数的啊~
还有问一下,错误提示中的Exception in thread "main" 1243是什么意思啊~
为什么它有时会在第一行,有时又在其他行的呢~ 展开
private static String num="";
public static void main(String[] args) throws Exception {//主函数
int[] arr={1,2,3};//给一个数组
int count=3;//给位数
num(arr,count);//调用①
System.out.print(num);//输出用逗号拼接的全部数字(可以用逗号拆分,然后算长度)
}
//arr 数组, count 位数
private static void num(int[] arr,int count){//①
num(arr,count,"");//调用②
}
//递归调用
private static void num(int[] arr,int count,String str){//②
扩展资料:
使用
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。
构成
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.9。
出处
Java是Sun微系统公司在1995年推出的,推出之后马上给互联网的交互式应用带来了新面貌。目前,最常用的两种互联网浏览器软件中都包括一个Java虚拟机。几乎所有的操作系统中都增添了Java编译程序。
体系
JavaSE(Java2 Platform Standard Edition,java平台标准版)。
JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版)。
JavaME(Java 2 Platform Micro Edition,java平台微型版)。
语言特点
1.简单性
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。
Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。
Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
2.面向对象
Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法,而不是严格地用过程来思考。
在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。
每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
3.分布性
Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。
网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
参考资料来源:百度百科--Java 编程语言
参考资料来源:百度百科--Java
错误提示中的Exception in thread "main" 1243其实这句话是两部分,错误只提示了Exception in thread "main",1243是正常输出的值。
而且while的判断条件很奇怪,为什么是去判断 num[count] 是否为0呢? count < 50应该是防止超过kind数组元素的个数,对于num数组后面就显然超过了啊!!
而且最好不要用50这个常量,而应该改为使用kind数组长度的变量来确定count的上限。
2013-09-01
那个错误,是超出下标了
请参考
//有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?
int[] num = new int[] {1, 2, 3, 4};
int[] kind = new int[500];
int count = 0;
for(int i = 0; i < num.length; i++) {
for(int j = 0; j < num.length; j++) {
for(int k = 0; k < num.length; k++) {
if(i == j || i == k || j == k) {
continue;
}
// System.out.println(num[i]*1000 + num[j]*100 + num[k]*10 + num[6-i-j-k]);
kind[count] = num[i]*1000 + num[j]*100 + num[k]*10 + num[6-i-j-k];
count++;
}
}
}
System.out.println();
count = 0;
while(count<kind.length){
if(kind[count]<1){
break;
}
System.out.println(kind[count]);
count++;
}
p(6,4)-p(5,3)=360-60=300
能组成300个互不相同且无重复字的四位数
第二个数有三种
第三个数有2种
第四个数有1种
所以一共有
4*3*2*1=24种可能