java如何判断水仙花数,JAVA入门 判定100-999里的水仙花数字 求大佬回答以下问题。...

先解答问题:

1、Scanner类获取键盘输入

2、可以建一个集合List存水仙花数,但只要输出的话没有必要,直接输出字符串即可

3、想要从大到小,调整for循环方向即可

从大到小:

for(int i = max; i >= min; i--){

// 代码

}

从小到大:

for(int i = min; i <= max; i++){

// 代码

}

整体思路:

1、输入:Scanner键盘输入,可输入多行,对数据进行格式校验(如果保证输入格式没问题,可以省略校验)

2、数据处理输出:符合条件的数据整理为集合,循环判断是否为水仙花数,判断完成,输出

3、输出完成进入下一次输入

先上控制台截图:

f148bd65b39f6b293c4aa00f71ec849b.png

public static void narcissus(){

System.out.println("每行请输入两个数字,可输入多行,两次回车返回结果!");

// 存储输入的字符串,每次输出后清空

List strList = new ArrayList<>();

Scanner sc = new Scanner(System.in);

while(sc.hasNextLine()){

String str = sc.nextLine().trim();

if(!"".equals(str)){

// 数字个数校验

if(str.split("\\s+").length == 2){

// 是否只有数字和空格校验

String pattern = "[\\d\\s]+";

Matcher meq = Pattern.compile(pattern).matcher(str);

if(meq.matches()){

strList.add(str);

}else{

System.out.println("包含数字和空格以外的字符: " + str);

}

}else{

System.out.println("请检查输入数字个数是否为两个: " + str);

}

}else{ // 输入为空,则进行水仙花数判断及输出

System.out.println("输出如下:");

for(String s : strList){

// 分割,判断两个数字的大小

String[] strArray = s.split("\\s+");

int first = Integer.valueOf(strArray[0]);

int second = Integer.valueOf(strArray[1]);

int min = first, max = second;

if(first > second){

min = second;

max = first;

}

// 水仙花数为三位数,超出此范围直接输出 no ,进行下一次循环

if(max < 100 || min > 999){

System.out.println("no");

continue;

}

// 判断 输出

String outStr = "";

for(int i = min;i<= max; i++){

int hun = i / 100;

int ten = i % 100 / 10;

int one = i % 10;

if(i == (hun*hun*hun + ten*ten*ten + one*one*one)){

outStr += i +" ";

}

}

if(!"".equals(outStr)){

System.out.println(outStr);

}else{

System.out.println("no");

}

}

// 集合清空,接收下一次输入

strList = new ArrayList<>();

System.out.println();

System.out.println("每行请输入两个数字,可输入多行,两次回车返回结果!");

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值