ใครช่วยอธิบายให้ฉันฟังได้ไหมว่าฉันจะเปลี่ยนสิ่งนี้เป็นลูปได้อย่างไร (วิธี allDigitsOdd)

ควรมีค่าจริงเพียงค่าเดียวที่ส่งคืนหรือค่าเท็จหนึ่งค่าที่ส่งคืนเมื่อสิ้นสุดลูป

ตรวจสอบแต่ละหลักของตัวเลขเพื่อดูว่าเป็นคี่หรือคู่ หากตัวเลขเป็นเลขคี่ ให้ไปที่หลักถัดไป หากตัวเลขที่กำลังตรวจสอบเป็นเลขคู่ ให้หยุดการวนซ้ำและส่งกลับค่าเท็จหนึ่งค่าสำหรับตัวเลขทั้งหมด หากตัวเลขทั้งหมดเป็นเลขคี่ให้คืนค่าจริง ฉันจะทำให้สิ่งนี้ใช้ได้กับตัวเลขใดๆ ได้อย่างไร ไม่ใช่แค่ตัวอย่างในสิ่งที่ฉันพยายามจะสื่อด้านล่าง

```java

public class oddOrEvenDigits {
   public static void main(String[] args) {

      boolean b1 = allDigitsOdd(73925);
      System.out.println(b1);
// correct output is false value



// create Method
  public static boolean allDigitsOdd(int n) {

// The integer is n but I am putting 73925 in place of n for the example of what I am trying to do

      // get the last digit of the number (n)
      (73925 example) % 10); // gives 5 as answer

      // check to see if the last digit of n (5 in example) is even or odd
      // if it is odd then keep going
      // if it is even then return false and stop loop

    (73925 / 10); // becomes 7392
    (7392 % 10); // gives 2 as answer

      // check to see if 2 is even or odd
      // if it is odd then keep going
      // if it is even then return false and stop the loop

      // check to see if the 2 is even or odd

      (7392 / 10); // becomes 739
      (739 % 10); // Output 9
      // check to see if 9 is even or odd
      // if it is odd then keep going
      // if it is even then return false and stop the loop

      (739 / 10); // becomes 73
      (73 % 10); // Output 3
      // check if 3 is odd or even
      // if it is odd then keep going
      // if it is even then return false and stop the loop

    (73 / 10); // becomes 7
     (7 % 10);// Output 7
      // check if 7 is odd or even
      // if 7 is odd then if all the previous numbers checked are also odd then return
      // true and stop the loop
      // if 7 is even then stop the loop

}

```
ตอบ

นี่เป็นวิธีหนึ่ง

int[] data = {23122, 20202,31753, 20209,99999};
for (int i : data) {
    System.out.println(i + " " +allDigitsOdd(i));
}

พิมพ์

23122 false
20202 false
31753 true
20209 false
99999 true
  • วนซ้ำจนถึงตัวเลข == 0
  • รับตัวเลขสุดท้ายโดยใช้เศษ (%) ผ่าน 10
  • จากนั้นทดสอบความสม่ำเสมอที่ทำเช่นเดียวกันกับ 2
  • ทันทีที่ตรวจพบคู่ ให้คืนค่า false
  • มิฉะนั้นจะคืนค่าเป็น จริง หากการวนซ้ำเสร็จสิ้น
public static boolean allDigitsOdd(int n) {
     while (n != 0) {
         if ((n%10)%2 == 0) {
             return false;
         }
         // expose next digit
         n/=10;
     }   
     return true;
}