上周老师布置的作业里面有一个题:输入1.2.3.4四个数,一共能组成多少互不重复的三位数?
for(var i=1;i<=4;i++){
for (var j=1;j<=4;j++) {
for (var n=1;n<=4;n++) {
if(i!=j&&j!=n&&n!=i){
document.write(j+i+n+'<br />');
}
}
}
}
这是我写的代码,我反复验证都觉得没错,可是输出后就不是我想要的结果,我很纳闷。
最后询问了同学,他给我说我输出错了,‘+’除了是连接符还是个加号,我猛然醒悟。
i j n 都是数字类型,直接连在一起它们肯定相加了呀,我居然忘了这茬,小尴尬!
正确写法有好几种:
1.
可以用笨办法,一个一个输出。
for(var i=1;i<=4;i++){
for (var j=1;j<=4;j++) {
for (var n=1;n<=4;n++) {
if(i!=j&&j!=n&&n!=i){
document.write(j);
document.write(i);
document.write(n+'<br />');
}
}
}
}
2.
for(var i=1;i<=4;i++){
for (var j=1;j<=4;j++) {
for (var n=1;n<=4;n++) {
if(i!=j&&j!=n&&n!=i){
var sum =i*100+j*10+n; // 定义一个sum变量
document.write(sum+'<br />');
}
}
}
}
3.
for(var i=1;i<=4;i++){
for (var j=1;j<=4;j++) {
for (var n=1;n<=4;n++) {
if(i!=j&&j!=n&&n!=i){
document.write(j*100+i*10+n+'<br />');
}
}
}
}
4.
也可以把它转换成字符串。
for(var i=1;i<=4;i++){
for (var j=1;j<=4;j++) {
for (var n=1;n<=4;n++) {
if(i!=j&&j!=n&&n!=i){
document.write(' '+j+i+n+'<br />');
}
}
}
}
虽然它们三个都是数字类型,但是 string类型+number类型 就是 string类型。用代码解释一下。
var a = 1;
c = 5;
b = '我是字符串';
document.write(typeof(a)+'<br />'); // 返回number
document.write(typeof(c)+'<br />'); // 返回number
document.write(typeof(b)+'<br />'); // 返回string
document.write(typeof(a+b+c)+'<br />'); // 返回string
前端基础新手可能会忽略的问题。