簡體   English   中英

檢查整數的數量是否在增加(java)

[英]Checking if numbers of an integer are increasing (java)

我想要做的應該很簡單,但是由於我是 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]", ""));  

我在網上找不到答案,而且它不應該復雜的事實讓我發瘋,如果有人能幫助我,我將不勝感激!

反過來做。 如果它們從第一個數字開始增加,則意味着它們從最后一個數字到第一個數字減少。 以這種方式編程要容易得多:

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;
}

您不能使用[]語法對整數(即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;
    }
}

我能想到的一種方法是:

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.
}

我假設您正在檢查整數中的各個數字。 如果是這樣,最好將 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");
                }
            }
        }

    }

}

我認為一個簡單的方法可能是這樣

    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;
    }
}
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)));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM