Ich schreibe ein Java-Programm für ein Projekt, das feststellt, ob eine dreistellige Zahl ein Palindrom ist oder nicht, und als ich damit fertig war, wurde mir nicht klar, dass in den Anweisungen auch angegeben ist, dass es erkennen muss, ob es sich um eine dreistellige Zahl handelt oder nicht, und ich kann nicht herausfinden, wie ich es in das umsetzen kann, was ich habe.

Ich kann keine Arrays oder Loops verwenden, da wir sie im Unterricht nicht durchgesehen haben und mein Professor nicht möchte, dass wir etwas verwenden, das wir technisch nicht wissen sollten. Es müssen alle Eingaben und Mathematik sein, um die Ziffern zu finden.

Der Code funktioniert, aber mein Problem betrifft den Bereich, in dem Ints d1, d2 und d3 initiiert werden. Ich denke, ich muss das "if (d1 == d3)" in einer anderen if-Anweisung verschachteln, die bestimmt, ob die Zahl dreistellig ist oder nicht. Ich habe in den letzten Tagen versucht, es selbst herauszufinden, aber ich stecke fest.

Jede Hilfe wird geschätzt, danke.

import java.util.Scanner;
import java.lang.Math;

public class Palindrome {

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

        //user or computer generated number
        System.out.print("Enter 1 if you would like to enter a 3-digit number. Enter 2 if you would like to have the computer generate it. ");
        int firstChoice = input.nextInt();

        //user entered number
        if (firstChoice == 1) {

            //enter the 3 digit number
            System.out.print("Enter a 3-digit number: ");
            int userNumbers = input.nextInt();

            //3 user numbers
            int d1 = userNumbers / 100;
            int d2 = (userNumbers / 100) / 10;
            int d3 = userNumbers % 10;


            if (d1 == d3) {
                System.out.println(userNumbers + " is a palindrome");
            } else {
                System.out.print(userNumbers + " is not a palindrome");
            }

            //computer generated number
        } else if (firstChoice == 2) {

            int low = 0;
            int high = 10;

            //generate 3 random numbers
            int num1 = (int)(Math.random() * ((high - low) - 1) + low);
            int num2 = (int)(Math.random() * ((high - low) - 1) + low);
            int num3 = (int)(Math.random() * ((high - low) - 1) + low);

            //computer number is or isn't a palindrome
            if (num1 == num3) {
                System.out.println(num1 + "" + num2 + "" + num3 + "");
                System.out.print(num1 + "" + num2 + "" + num3 + " is a palindrome");
            } else {
                System.out.println(num1 + "" + num2 + "" + num3 + "");
                System.out.print(num1 + "" + num2 + "" + num3 + " is not a palindrome");
            }
            //incorrect input
        } else {
            System.out.println("Incorrect input");
        }
    }
}
0
efan 21 Feb. 2020 im 20:20

3 Antworten

Sie können es auch in eine Zeichenfolge konvertieren. Überprüfen Sie daher, ob die Länge nicht 3 ist. Wenn es 3 ist, vergleichen Sie die Zeichen bei 0 und 2. Außerdem sollten Sie den Scanner am Ende schließen.

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

    //user or computer generated number
    System.out.print("Enter 1 if you would like to enter a 3-digit number. Enter 2 if you would like to have the computer generate it. ");
    Integer firstChoice = input.nextInt();

    //user entered number
    if (firstChoice == 1) {

        //enter the 3 digit number
        System.out.print("Enter a 3-digit number: ");
        Integer userNumbers = input.nextInt();

        String strNumber = userNumbers.toString(); 

        if (strNumber.length() != 3) {
            System.out.println("Number lenght should be 3");
        } else if (strNumber.charAt(0) == strNumber.charAt(2)) {
            System.out.println(userNumbers + " is a palindrome");
        } else {
            System.out.print(userNumbers + " is not a palindrome");
        }

        //computer generated number
    } else if (firstChoice == 2) {

        int low = 0;
        int high = 10;

        //generate 3 random numbers
        int num1 = (int)(Math.random() * ((high - low) - 1) + low);
        int num2 = (int)(Math.random() * ((high - low) - 1) + low);
        int num3 = (int)(Math.random() * ((high - low) - 1) + low);

        //computer number is or isn't a palindrome
        if (num1 == num3) {
            System.out.println(num1 + "" + num2 + "" + num3 + "");
            System.out.print(num1 + "" + num2 + "" + num3 + " is a palindrome");
        } else {
            System.out.println(num1 + "" + num2 + "" + num3 + "");
            System.out.print(num1 + "" + num2 + "" + num3 + " is not a palindrome");
        }
        //incorrect input
    } else {
        System.out.println("Incorrect input");
    }

    input.close();
}
0
Pechu 21 Feb. 2020 im 18:10

Mach es wie folgt:

// user entered number  
if (firstChoice == 1) {
    int userNumbers;
    // enter the 3 digit number
    do {
        System.out.print("Enter a 3-digit number: ");
        userNumbers = input.nextInt();
        if (userNumbers >= 100 && userNumbers <= 999) {
            // 3 user numbers
            int d1 = userNumbers / 100;
            int d3 = userNumbers % 10;

            if (d1 == d3) {
                System.out.println(userNumbers + " is a palindrome");
            } else {
                System.out.print(userNumbers + " is not a palindrome");
            }
        } else {
            System.out.println("The number has to be of 3 digits");
        }
    } while (!(userNumbers >= 100 && userNumbers <= 999));

    // computer generated number
} else if (firstChoice == 2) {
    // ...
}

Ein Probelauf:

Enter 1 if you would like to enter a 3-digit number. Enter 2 if you would like to have the computer generate it. 1
Enter a 3-digit number: 12
The number has to be of 3 digits
Enter a 3-digit number: 2000
The number has to be of 3 digits
Enter a 3-digit number: 121
121 is a palindrome

Ein weiterer Probelauf:

Enter 1 if you would like to enter a 3-digit number. Enter 2 if you would like to have the computer generate it. 1
Enter a 3-digit number: 123
123 is not a palindrome

Sie können die Logik auch neu schreiben, um die computergenerierte dreistellige Zufallszahl wie folgt zu überprüfen:

if (firstChoice == 1) {// user entered number
    int userNumbers;
    // enter the 3 digit number
    do {
        System.out.print("Enter a 3-digit number: ");
        userNumbers = input.nextInt();
        if (userNumbers >= 100 && userNumbers <= 999) {
            // 3 user numbers
            int d1 = userNumbers / 100;
            int d3 = userNumbers % 10;

            if (d1 == d3) {
                System.out.println(userNumbers + " is a palindrome");
            } else {
                System.out.print(userNumbers + " is not a palindrome");
            }
        } else {
            System.out.println("The number has to be of 3 digits");
        }
    } while (!(userNumbers >= 100 && userNumbers <= 999));  
} else if (firstChoice == 2) {// computer generated number    
    int low = 0;
    int high = 1000;    
    // generate a 3-digit random number
    int num = (int) (Math.random() * ((high - low) - 1) + low);    
    int d1 = num / 100;
    int d3 = num % 10;    

    if (d1 == d3) {
        System.out.println(num + " is a palindrome");
    } else {
        System.out.print(num + " is not a palindrome");
    }
}

Fühlen Sie sich frei, im Zweifelsfall zu kommentieren.

1
Arvind Kumar Avinash 21 Feb. 2020 im 18:00

Gehen Sie folgendermaßen vor, um zu überprüfen, ob es sich um eine dreistellige Zahl handelt:

if(userNumbers>99 && userNumbers<1000){ 
    //has 3 digits
} else { 
    //doesnt have 3 digits, return
}
1
MZ97 21 Feb. 2020 im 17:32