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

水仙花数 及作业要求

问题:

1. 我们只学了用 int a,b; 来创建两个可键入的变量。如何像图片里一样一次性创建多个可键入变量(中途并换行)。

2. 判定a b区间内有几个水仙花数时,应该用什么方法判断有哪几个数字?(我觉得这块我要创建几个double变量 来对应这几个水仙花数,但应该如何写呢)

3. 如何从大到小列出这几个数字?

(暂且就这三个 问题,希望大佬尽快给予解答)如果可能最好po码上来。

(顺便说一下我的操作环境时eclipse win - 64bit,用的时java se 1.14环境)

回答

先解答问题:

1、Scanner类获取键盘输入

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

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

从大到小:

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

// 代码

}

从小到大:

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

// 代码

}

整体思路:

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

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

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

先上控制台截图:
控制台

public static void narcissus(){

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

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

List<String> 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("每行请输入两个数字,可输入多行,两次回车返回结果!");

}

}

}

以上是 JAVA入门 判定100-999里的水仙花数字 求大佬回答以下问题。 的全部内容, 来源链接: utcz.com/a/34512.html

回到顶部