-2
votes

Comment trouver le carré parfait le plus proche inférieur à l'entrée, ou le carré parfait peut être l'entrée

Je veux faire un programme qui obtient une entrée numérique et trouve le carré parfait le plus proche pour déterminer la longueur carrée. Ainsi, le carré parfait le plus proche doit être inférieur à l'entrée. Par exemple, si l'entrée est 8, la plus grande longueur latérale du carré est 2. Le problème est que le programme me demandera de saisir un nombre mais ne produit rien après cela. Il dit également que j'ai une variable locale en double A1. xxx


6 commentaires

Vous nous avez dit ce que vous voulez faire, mais pas quel problème vous rencontrez avec votre tentative de code. Vous mentionnez la ligne 13 dans le titre de la question, mais n'éteignez pas quelle ligne cette ligne est dans votre code. Veuillez éditer votre question pour que ce soit plus claire quel est le problème pour que vous ayez une meilleure chance de pouvoir vous aider.


Vous devriez regarder très soigneusement à la condition de boucle dans pour (int A1 = A; A1 - votre boucle est jamais entré.


J'ai clarifié ma question


Pouvez-vous s'il vous plaît clarifier ce que vous entendez par ce @elliottfrisch


Vous attribuez quelque chose à la variable n, mais ne l'utilisez jamais. Était-ce ce que tu voulais faire?


Je voulais avoir la réponse à la racine carrée de l'entrée @MarkPlotnick


3 Réponses :


0
votes

Comme mentionné par Elliott dans le commentaire, la boucle n'est jamais entrée. Raison: A1 em> est attribué la valeur de a em> et ensuite vous vérifiez si A1. Ce qui n'est pas vrai et donc la boucle est terminée même avant sa 1ère itération. Pour ce que vous essayez de faire de la balance, utilisez:

for (a1=a; a1 >= 0; a1--) {
    if (Math.floor(a1)==0)
    System.out.println("The largest square has side length" + a1); 
}


2 commentaires

Comment ferais-je résoudre ce problème, j'ai fait une égale à A1 et commencera à diminuer pour déterminer le carré parfait le plus proche de l'entrée représentée par un.


pour (int A1 = A; A1> 0; A1--)



0
votes

Si je comprends votre problème correctement, je pense que vous voulez faire une diminution de la valeur A1 jusqu'à ce qu'elle atteigne 0. Peut-être avez-vous besoin de

for ( a1=a; a1 >= 0; a1--) {
        if (Math.floor(a1)==0)
        System.out.println("The largest square has side length" + a1); 
 }


2 commentaires

Il dit qu'il y a une variable locale en double A1 dans la boucle


@Cleo j'ai mis à jour ma réponse initiale pour répondre à la question "Double variable locale".



0
votes

Il existe divers problèmes avec le code que d'autres ont souligné et je suis sûr que vous les prendrez à bord. Pour résoudre votre problème, je ferais quelque chose comme ça. La boucle tandis que vous permet de continuer à essayer de nouvelles valeurs jusqu'à ce que vous entrez -1.

public static void main(String[] args) {
    System.out.println("Enter value:");
    Scanner sc = new Scanner(System.in);
    while (sc.hasNext()) {
        boolean hasPerfectSquare = false;
        int input = sc.nextInt();
        if (input == -1) {
            break;
        }
        for (int i = input; i > 0; i--) {
            if (Math.floor(Math.sqrt(i)) == Math.sqrt(i)) {
                hasPerfectSquare = true;
                System.out.println((int) Math.sqrt(i));
                break;
            }
        }
        if (!hasPerfectSquare) {
            System.out.println("No perfect square");
        }
        System.out.println("Enter value:");
    }
}


0 commentaires