java有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?
1,2,3,4四个数字,可以组成24互不相同个且无重复数字的四位数,从小到大依次是
1234,1243,1324,1342,1423,1432,
2134,2143,2314,2341,2413,2431,
3124,3142,3214,3241,3412,3421,
4123,4132,4213,4231,4312,4321
如何在java中用正则表达式验证一个字符串中是否包含连续的4位数字?
string regex content \\d \d '0' \\\\d \\d '\d' \\Q\\d\\E \Q\d\E '\d' 当你不想字符当作正则的功能字符时,可以用\Q \E包裹起来,那么内部就会被看做字符串。
JAVA中,求输入一个正整数,判断其是否是一个完美数,用while循环怎么做最简洁?
求输入一个正整数,判断其是否是一个完美数,用while循环怎么做最简洁?
完美数概念
首先你得了解什么叫”完美数“。一个数如果恰好等于除其本身外所有因子之和,这个数就称为“完美数”。例如6=1+2+3.编程找出10000以内的所有完数。所以1不算,循环的话就得从1开始;
解题思路
从1开始至目标数减1进行循环,逐一去判断循环数是否为目标数的因子,若是,则加总至和,最后所有数都比较完,再对和和目标数进行相等判断,如果和等于目标数,则是完美数,否则不是;
实现
小编用C++的方式来实现,因为手边没有好的Java的IDE,就这个问题,主要牵涉到的就是循环逻辑处理,跟语言没多大关系,所以C++你也能看得懂。
while循环实现
int target_num = 6 ;//换成你要输入的数
int sum = 0 ;//用来累加因子的和
int i = 1 ;
while (i<target_num)
{
i++ ;
//判断i是否为目标数target_num 的因子 若是因子则目标是可以被整除
if(target_num%i == 0)sum+=i ;累积因子和
}
if(sum == target_num)cout<<"是完美数"<<endl;
else cout<<"不是完美数"<<endl;
for循环实现
int target_num = 6 ;//换成你要输入的数
int sum = 0 ;用来累加因子的和
for (int i = 1; i < target_num; i++)
{
//判断i是否为目标数target_num 的因子 若是因子则目标是可以被整除
if(target_num%i == 0)sum += i ;//累积因子和
}
if(sum == target_num)cout<<"是完美数"<<endl;
else cout<<"不是完美数"<<endl;
总结
其实完美数判断起来还是比较简单的,while循环在简洁和效率上都是不如for循环的。虽然你的问题是while怎么实现,但是建议用for循环。
这个问题主要考的是循环和if结合使用的方式,所以这里我们从认识完美数开始,这样才能根据他是要求去转换为代码:
什么是完美数
完美数用答主自己的话来说,一个数,从1开始到它自己,能被它自己整除的数,加起来还等于它自己,就是所谓的完美数。比喻:6 能被它整除的有:1,2,3。
整除的数全加起来:1+2+3=6
Java实现代码的主要逻辑
好知道了什么是完美数,那么根据这个要求我们来做完美数的计算,整个实现的思路我们一步一步的来运算:
第一步:需要从控制台上输入,那么需要用到Scanner工具
Scnner sca=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int num=sca.nextInt();//接收输入的正整数
第二步:设置循环变量和除数的累加变量
int i=1;//因为除数是从1开始
int sum=0;//用来做当前能被整除的数的累加变量,默认是没有累加,所以为0
第三步:做当前输入的数字的从1开始到它自己本身的循环除,获取所有的能被整除的数,并累加;
while(i<num){
if(num%i==0){//判断当前的数,是否能被输入的数整除
sum+=i;//能整除做累加操作
}
i++;
}
第四步:累加所有的能被整除的数sum和输入的数num做比较是否相同,相同这个数就算完美数。
if(sum==num){//判断累加的所有整除的数和输入的数是否相同
System.out.println("是完美数");//相同就是完美数
}else{
System.out.println("不是完美数");//否则就不是完美数
}
完整代码,以及输出结果
总结:那么这个题目的难度重点是要理解完美数的要求,并且知道要求之后如何去转换为代码,这个是关键点,这个点对于所有刚开始学的Java编程的小伙伴来说都是需要慢慢克服的,也没有别的什么捷径,唯一的方式就是多练。
以上是答主自己的解决方案,如果有更好意见的小伙伴可以在评论区留言,或者点赞,加关注我们一起慢慢探讨探讨
java中要从控制台输入数字的代码怎么写?
如果要int类型,只要把doubleinput=scanner.nextDouble();换为intinput=scanner.nextInt().同样适用于float,shortbyte等类型importjava.util.Scanner;publicclassABC{publicstaticvoidmain(String[]args){doubleinput=getInputFromConsole();}//接受控制台输入数字privatestaticdoublegetInputFromConsole(){Scannerscanner=newScanner(System.in);doubleinput=scanner.nextDouble();returninput;}}