微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有用户输入的幸运数字

如何解决带有用户输入的幸运数字

我在解决以下问题时遇到了麻烦:我想让用户输入数字并检查它是否是幸运数字。幸运数字是偶数位的平方和(从第二个位置开始)是7的倍数。

以下是我的代码示例,当我运行该程序时,它将停留在用户输入下,请告知如何运行该程序:

public class Tester {

public static void main(String[] args) {
            
    Scanner scanner = new Scanner(system.in);

    System.out.println("Input a number: ");
    int number = scanner.nextInt();
    
    int count = 0;
    while(number!=0) {
        number/=10;
        ++count;
    }
    
    int[] array = new int[count];
    int sum = 0;
    
    for (int i=0; i<count; i++) {
        array[i] = scanner.nextInt();
    }

    for (int i=0; i<count; i++) {
        if(array[i]%2==0) {
            sum+=(array[i]*array[i]);
        }
        else {
            continue;
        }
    }
    
    if (sum%7==0) {
        System.out.println("The number: " +number+ "is a Lucky number");
    }
    else {
        System.out.println("Oops! Not a Lucky number");
    }
    
    scanner.close();
}
}

解决方法

我相信罪魁祸首是以下循环:

for (int i=0; i<count; i++) {
  array[i] = scanner.nextInt();
}

我认为您的意图是将每个数字放入一个数组中。但是,您从扫描仪获得的输入(在这种情况下是用户输入)连续count次。

虽然有几种方法可以将位数和每个位数放入数组中。我要给你两种方法。另外,我看不到输入整数(例如负数等)的验证,现在我将忽略它们。

方法1:您的for循环已更正

您只需使用公式即可获得数字的第i个数字。

for (int i=1; i<=count; i++) {
  array[i] = (int) (number / Math.pow(10,count-i)) % 10;
}

方法2:使用流将数字转换为String并返回

List<Integer> digits = Arrays.toStream(number.toString().split("")).map(
  digitChar -> Integer.parseInt(digitChar)
).collect(Collectors.toList());

注意: 您需要导入类java.util.Arraysjava.util.stream.Collectors

,

如果您甚至希望定位数字,则可以直接在while循环中获取它。

while(number!=0) {
    if(count%2 !=0){
      int value = number %10;   // even positioned values
      // Do whatever you need to do with this value
    }
    number/=10;
    ++count;
}

如果要将数字转换为数字数组,请先使用对数函数查找数字位数,然后以相反的顺序将其存储。

int noOfDigits =(int) Math.floor(Math.log10(number)+1); // Finding No of digits
int[] array = new int[noOfDigits];

while(--noOfDigits>=0){
    array[noOfDigits] = number/10;         // storing every digits in reverse order
    number%=10;
}

我不知道下面的代码对您的核心逻辑会有帮助,但我也记录了这一点。

如果要 偶数位数的平方和表示为数组 ,则可以使用以下代码。

int sum = 0;
for (int i=1; i<array.length; i+=2) {
    sum += array[i] * array[i];
}

if (sum%7==0) {
    // print number is lucky
}
else {
   // print number is not lucky
}
,

如果我正确理解了您的描述,那么以下程序可以满足您的需求:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Input a number: ");
    System.out.flush();
    int number = scanner.nextInt();

    int count = 0;
    int n = number;
    int sum = 0;
    while(n!=0) {
        int d = n % 10;
        n/=10;
        ++count;
        if (count % 2 == 0) {
            System.out.printf("sum = %d + %d^2 = %d\n",sum,d,sum + d * d);
            sum += d * d;
        }
    }

    if (sum%7==0) {
        System.out.printf("The number: %d is a Lucky number (%d = 7 * %d)",number,sum / 7);
    }
    else {
        System.out.println("Oops! Not a Lucky number");
    }

    scanner.close();
}

幸运的结果:

Input a number: 123456
sum = 0 + 5^2 = 25
sum = 25 + 3^2 = 34
sum = 34 + 1^2 = 35
The number: 123456 is a Lucky number (35 = 7 * 5)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?