gpt4 book ai didi

java - 如何在不使用 Java 中的字符串或列表的情况下检查数字的数字是按升序还是降序排列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:45 25 4
gpt4 key购买 nike

我只想使用整数并且只抛出一次数字!我设法使用两种方法解决了这个问题,但我试图找到一种方法,只使用一种方法来检查任何数字,看看它的数字是按升序、降序排列还是没有排列!

public static void main(String[] args) {
int number = 0;
System.out.println("Number: ");

try (Scanner sc = new Scanner(System.in);) {
number = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("Numbers only!");
}

if (checkDigitsOrder(number)) {
System.out.println("The digits are ordered descending!");
}
}

private static boolean checkDigitsOrder(int number) {
int lastDigit, beforeLastDigit, clone = number;

if (number == 0) {
System.out.println("Number can`t be 0!");
System.exit(0);
}

lastDigit = clone % 10;
clone /= 10;
beforeLastDigit = clone % 10;
clone /= 10;

if (lastDigit < beforeLastDigit) {
do {
lastDigit = number % 10;
number /= 10;
beforeLastDigit = number % 10;
number /= 10;

if (lastDigit < beforeLastDigit) {
return false;
}
System.out.println(number);
} while (number > 0);
}
return true;
}

最佳答案

你的算法有几个问题:

  1. 问题有 3 种可能的状态(升序、降序和无序),但是您的方法返回 boolean (2 个州)。

  2. 它不会处理您拥有相等且连续数字的情况(432111 仍应被视为升序,但 lastDigit < beforeLastDigit 会在您的代码中返回 false)。

所以这是我的建议:返回 int ( 1=ascending-1=descending0=not oredered ),并添加一个嵌套循环,如果 currentDigit 有效地跳过一个循环和 lastDigit是一样的:

public static int order(int num) {
//fetch the first two digits
int lastDigit = num%10, digit;
num /= 10;
digit = num%10;

if(digit == 0) ???;//case where only one digit, handle it as you wish

while(digit==lastDigit) {
lastDigit = digit;
num /= 10;
digit = num%10;
}

if(digit == 0) ???;//case where repeated digit, handle it as you wish

//is it ascending so far?
boolean ascending = digit > lastDigit;

while(num != 0) {
lastDigit = digit;
digit = num%10;

while(digit==lastDigit) {
lastDigit = digit;
num /= 10;
digit = num%10;
}

//this handles the case where the last digits are the same
if(num == 0) break;

//if not same direction, return 0 (not ordered)
if(ascending != digit>lastDigit) return 0;

num /= 10;
}

if(ascending) return 1; //ascending
else return -1; //descending
}

关于java - 如何在不使用 Java 中的字符串或列表的情况下检查数字的数字是按升序还是降序排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com