Проблемы с петлями - PullRequest
0 голосов
/ 18 июня 2020

У меня проблемы с al oop Я сделал. Он получает правильные ответы, но продолжает зацикливаться. Я знаю, что это из-за раздела while(true), но я не вижу, где должен быть перерыв (при необходимости). Есть ли лучший способ написать это? Также почему он работает только при добавлении второго System.out.println? Я надеялся, что это будет oop, пока условие не будет выполнено

Спасибо

import java.util.Scanner;

public class babyalgo
{

    private float a ; //the Number that the user is finding the sqrt of
    private float x1 = 2 ; // the starting guess 
    private double x2;
    /**
     * Constructor for objects of class babyalgo
     */
    public  void main (String[] args)
    {
        // initialise instance variables

        Scanner scan = new Scanner(System.in); // creating a scanner to take the user input
        System.out.println("Please enter your the number you wish to square root");
        float a = scan.nextInt();

        while (true){
            if (x1* x1 == a){
               System.out.println("Your final answer is" +" " +  x1);
            }

            else {
                x1 = (x1 +(a/x1))/2;
                System.out.println("Your final answer is" +" " +  x1);                 
            }
        }
    }

}

Ответы [ 3 ]

0 голосов
/ 18 июня 2020

Прежде всего, у вас нет оператора break l oop.
Также у вас неправильный оператор сравнения x1 * x1 == a.
Вы можете прочитать больше по ссылке https://howtodoinjava.com/java/basics/correctly-compare-float-double/

0 голосов
/ 19 июня 2020

Вы должны l oop , пока условие не true , поэтому while(... != ...). Затем внутри while l oop вы можете реализовать изменение x1 и после while l oop вы можете распечатать результат.

0 голосов
/ 18 июня 2020

Почему бы не использовать do while l oop, чтобы он выполнялся хотя бы один раз, а затем оценивал условие для его выхода? Может, мне нужно более подробное объяснение того, что вы пытаетесь выполнить sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...