检查整数的数字是否在增加(java)

时间:2014-03-22 17:07:44

标签: java arrays integer

我想要做的事情应该很简单,但是因为我是java的新手,所以我在努力学习基本的编程。

主要问题是如何检查整数的(x + 1)数是否大于x数,我试图按如下方式进行:

for( int x=0; x < Integer.toString(numblist).length();x++) {            
    if (numblist[x] < numblist[x+1]) {
        compliance= "OK";
    } else{
        compliance="NOK";
} 

但它返回错误“需要数组但找到整数”。 这似乎是一个基本的类型错误,可能来自上一步(只保留字符串中包含的数字):

 for (int p = 0; p < listWithoutDuplicates.size(); p++) {

      Integer numblist =  Integer.parseInt(listWithoutDuplicates.get(p).getVariantString().replaceAll("[\\D]", ""));  

我无法在网上找到答案,而且它不应该是复杂的事实让我发疯,如果有人能帮助我,我将不胜感激!

6 个答案:

答案 0 :(得分:2)

反过来。如果它们从第一个数字开始增加,则意味着它们从最后一个减少到第一个数字。以这种方式编程要容易得多:

public boolean increasingDigits(int input)
{
    // Deal with negative inputs...
    if (input < 0)
        input = -input;

    int lastSeen = 10; // always greater than any digit
    int current;

    while (input > 0) {
        current = input % 10;
        if (lastSeen < current)
            return false;
        lastSeen = current;
        input /= 10;
    }
    return true;
}

答案 1 :(得分:1)

您不能使用numblist语法索引整数(即[]) - 这仅适用于数组,因此您的错误。我认为你让它变得比以前更加复杂;为什么不从整数的后面开始并检查数字是否正在减少,这将避免所有这些业务与字符串:

int n = numblist;
boolean increasing = true;

while (n > 0) {
    int d1 = n % 10;
    n /= 10;
    int d2 = n % 10;

    if (d2 > d1) {
        increasing = false;
        break;
    }
}

答案 2 :(得分:1)

我能想到的一种方法是:

boolean checkNumber(int n) {
    String check = String.valueOf(n); // Converts n to string.
    int length = check.length(); // Gets length of string.
    for (int i = 0; i < length-1; i++) {
        if(check.charAt(i) <= check.charAt(i+1)) { // Uses the charAt method for comparison.
            continue; // if index i <= index i+1, forces the next iteration of the loop.
        }
        else return false; // if the index i > index i+1, it's not an increasing number. Hence, will return false.
    }
    return true; // If all digits are in an increasing fashion, it'll return true.
}

答案 3 :(得分:0)

我假设您正在检查整数内的各个数字。如果是这样,最好将Integer转换为字符串,然后循环遍历字符串中的字符。

public class Test {

    public static void main(String[] args) {

        Integer num = 234; // New Integer
        String string = num.toString(); // Converts the Integer to a string
        // Loops through the characters in the string
        for(int x = 0; x < string.length() - 1; x++){
            // Makes sure that both string.charAt(x) and string.charAt(x+1) are integers
            if(string.charAt(x) <= '9' && string.charAt(x) >= '0' && string.charAt(x+1) <= '9' && string.charAt(x+1) >= '0'){
                if(Integer.valueOf(string.charAt(x)) < Integer.valueOf(string.charAt(x+1))){
                    System.out.println("OK");
                }else{
                    System.out.println("NOK");
                }
            }
        }

    }

}

答案 4 :(得分:0)

我认为这可能是一个简单的方法

    package javacore;

import java.util.Scanner;

// checkNumber
public class Main_exercise4 {
    public static void main (String[] args) {
        // Local Declarations
        int number;
        boolean increasingNumber=false;
        Scanner input = new Scanner(System.in);
        number = input.nextInt();
        increasingNumber = checkNumber(number);
        System.out.println(increasingNumber);
    }
    public static boolean checkNumber(int number) {
        boolean increasing = false;
        while(number>0) {
            int lastDigit = number % 10;
            number /= 10;
            int nextLastDigit = number % 10;
            
            if(nextLastDigit<=lastDigit) {
                increasing=true;
            }
            else {
                increasing=false;
                break;
            }
            
        }
        return increasing;
    }
}

答案 5 :(得分:-1)

private boolean isIncreasingOrder(int num) {
        String value = Integer.toString(num);
        return IntStream.range(0, value.length() - 1).noneMatch(i -> Integer.parseInt(value.substring(i, i + 1)) > Integer.parseInt(value.substring(i + 1, i + 2)));
}