基础编程题目集 ——7-16 求符合给定条件的整数集

23 篇文章 1 订阅

1 题目要求

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:
输入在一行中给出A。
输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

2 样例

输入样例:
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

3 分析

(1)根据样例分析总体结构——
共3位数,每位数从[a,a+1,a+2,a+3]中选择,且每个三位数中的三个数字不重复。
据此,应设定3个循环,这三个循环有先后顺序且嵌套。
(2)第一个循环控制百位数,只要保证在区间内就行。
(3)第二个循环控制十位数,不能与百位数相同
(4)第三个循环控制个位数,不能与百位,十位数相同

(5)数据结构——
需要根据循环和判断来确定各个位上的数,每到达一层循环时的数 的位数不相同
——这决定了更新这一位的数时是采用替换replace(start,end,string)还是添加append(obj)
——每次输入完一个三位数,需要将输出的 串 置为空setLength(0)
所以采用StringBuilder——
特点:
1,长度是可变化的。
2,可以字节操作多个数据类型。
3,最终会通过toString方法变成字符串。

4 代码

import java.util.Scanner;
class Main
{
    public static void printSet(int num)
    {
        StringBuilder sb=new StringBuilder();
        int count=0;
        if(num<=6)
        {
           for (int i=num;i<=num+3;i++)
           {
               sb.append(i);
               for(int j=num;j<=num+3;j++)
               {
                   if(j!=i)
                   {
						if(sb.length()==1)
							sb.append(j);
						else// 
							sb.replace(1,2,new Integer(j).toString());
						for(int k=num;k<=num+3;k++)
						{
							if(k!=i&&k!=j){
								if(sb.length()==2)
									sb.append(k);
								if(sb.length()==3)
									sb.replace(2,3,new Integer(k).toString());
								count++;							
								if(count%6==0)
								{
									System.out.println(sb);
								//	break;
								}
								else
								{
									System.out.print(sb+" ");
								//	break;
								}
							}                          
						}				
                   }			 
               }
			   sb.setLength(0);								
           }
        }
    }
    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        printSet(num);
    }
}

5 总结

(1)java的键盘录入

		Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

(2)循环结构
(3)StringBuilder:
append()
replace()
setLength()
length()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值