It looks like you're new here. If you want to get involved, click one of these buttons!

- 141.2K All Categories
- 103.9K Programming Languages
- 6.5K Assembler Developer
- 1.9K Basic
- 40K C and C++
- 2.9K C#
- 7.9K Delphi and Kylix
- 4 Haskell
- 9.7K Java
- 4.1K Pascal
- 1.3K Perl
- 2K PHP
- 552 Python
- 37 Ruby
- 4.4K VB.NET
- 1.6K VBA
- 20.9K Visual Basic
- 2.6K Game programming
- 317 Console programming
- 93 DirectX Game dev
- 1 Minecraft
- 112 Newbie Game Programmers
- 2 Oculus Rift
- 9K Applications
- 1.8K Computer Graphics
- 746 Computer Hardware
- 3.5K Database & SQL
- 535 Electronics development
- 1.6K Matlab
- 628 Sound & Music
- 258 XML Development
- 3.3K Classifieds
- 199 Co-operative Projects
- 199 For sale
- 190 FreeLance Software City
- 1.9K Jobs Available
- 605 Jobs Wanted
- 212 Wanted
- 2.9K Microsoft .NET
- 1.8K ASP.NET
- 1.1K .NET General
- 3.4K Miscellaneous
- 7 Join the Team
- 356 Comments on this site
- 71 Computer Emulators
- 2.1K General programming
- 187 New programming languages
- 640 Off topic board
- 226 Mobile & Wireless
- 98 Android
- 126 Palm Pilot
- 340 Multimedia
- 156 Demo programming
- 184 MP3 programming
- Bash scripts
- 27 Cloud Computing
- 53 FreeBSD
- 1.7K LINUX programming
- 371 MS-DOS
- Shell scripting
- 321 Windows CE & Pocket PC
- 4.1K Windows programming
- 944 Software Development
- 417 Algorithms
- 68 Object Orientation
- 92 Project Management
- 95 Quality & Testing
- 271 Security
- 7.7K WEB-Development
- 1.8K Active Server Pages
- 62 AJAX
- 6 Bootstrap Themes
- 55 CGI Development
- 28 ColdFusion
- 224 Flash development
- 1.4K HTML & WEB-Design
- 1.4K Internet Development
- 2.2K JavaScript
- 37 JQuery
- 309 WEB Servers
- 157 WEB-Services / SOAP

knight2255
Member Posts: **4**

in Java

I'm having a problem writing the proper loop statement for a problem that wants to find the square root of a number. I'm not sure if I should use a do/while, while, or a for loop. I need to approximate the square root of a number without using math.sqrt.

Problem says to repeatedly make guesses at the square root until I get closer and closer to the right guess. I store the last guess and the next guess. The next guess is computed as: (last guess + N / last guess). The first time through this process, we assume that the last guess is 1.0.

last guess = 1.0

next guess = (last guess + N / last guess)

loop as long as the absolute difference between the two guesses is greater than 0.005

save the next guess in last guess

next guess = (last guess + N / last guess)

end loop

thanx for any help

Problem says to repeatedly make guesses at the square root until I get closer and closer to the right guess. I store the last guess and the next guess. The next guess is computed as: (last guess + N / last guess). The first time through this process, we assume that the last guess is 1.0.

last guess = 1.0

next guess = (last guess + N / last guess)

loop as long as the absolute difference between the two guesses is greater than 0.005

save the next guess in last guess

next guess = (last guess + N / last guess)

end loop

thanx for any help

Terms of use / Privacy statement / Publisher: Lars Hagelin

Programmers Heaven articles / Programmers Heaven files / Programmers Heaven uploaded content / Programmers Heaven C Sharp ebook / Operated by CommunityHeaven

© 1997-2017 Programmersheaven.com - All rights reserved.

## Comments

:

: Problem says to repeatedly make guesses at the square root until I get closer and closer to the right guess. I store the last guess and the next guess. The next guess is computed as: (last guess + N / last guess). The first time through this process, we assume that the last guess is 1.0.

:

:

: last guess = 1.0

: next guess = (last guess + N / last guess)

: loop as long as the absolute difference between the two guesses is greater than 0.005

: save the next guess in last guess

: next guess = (last guess + N / last guess)

: end loop

:

: thanx for any help

:

Your question is already answered within your question:

...

[b]loop[/b] as long as the absolute difference between the two guesses is greater than 0.005

...

[b]end loop[/b]

[code]

...

while (the absolute difference between the two guesses is greater than 0.005) {

...

}

[/code]

tron.

4: :

: : Problem says to repeatedly make guesses at the square root until I get closer and closer to the right guess. I store the last guess and the next guess. The next guess is computed as: (last guess + N / last guess). The first time through this process, we assume that the last guess is 1.0.

: :

: :

: : last guess = 1.0

: : next guess = (last guess + N / last guess)

: : loop as long as the absolute difference between the two guesses is greater than 0.005

: : save the next guess in last guess

: : next guess = (last guess + N / last guess)

: : end loop

: :

: : thanx for any help

: :

:

: Your question is already answered within your question:

:

: ...

: [b]loop[/b] as long as the absolute difference between the two guesses is greater than 0.005

: ...

: [b]end loop[/b]

:

: [code]

: ...

: while (the absolute difference between the two guesses is greater than 0.005) {

: ...

: }

: [/code]

:

: tron.

:

So the program would werk if i did this

while(nextGuess < .005) {

nextGuess = 1/2 * (lastGuess + x/lastGuess)

nextGuess = lastGuess

: : :

: : : Problem says to repeatedly make guesses at the square root until I get closer and closer to the right guess. I store the last guess and the next guess. The next guess is computed as: (last guess + N / last guess). The first time through this process, we assume that the last guess is 1.0.

: : :

: : :

: : : last guess = 1.0

: : : next guess = (last guess + N / last guess)

: : : loop as long as the absolute difference between the two guesses is greater than 0.005

: : : save the next guess in last guess

: : : next guess = (last guess + N / last guess)

: : : end loop

: : :

: : : thanx for any help

: : :

: :

: : Your question is already answered within your question:

: :

: : ...

: : [b]loop[/b] as long as the absolute difference between the two guesses is greater than 0.005

: : ...

: : [b]end loop[/b]

: :

: : [code]

: : ...

: : while (the absolute difference between the two guesses is greater than 0.005) {

: : ...

: : }

: : [/code]

: :

: : tron.

: :

: So the program would werk if i did this

:

: while(nextGuess < .005) {

: nextGuess = 1/2 * (lastGuess + x/lastGuess)

: nextGuess = lastGuess

:

No :-(

Take a closer look at the pseudo code you'd posted in your original question.

Here are some hints:

- the difference between the two guesses: (nextGuess-lastGuess)

- the absolut value of that difference: Math.abs(...)

- loop as long as this difference is greater than 0.005: ">" not "<"

- "save the next guess in last guess"

- and after! that calculate the new guess

If " (last guess + N / last guess)" means "1/2 * (lastGuess + x/lastGuess)" then your loop should look like this:

[code]

while(Math.abs(nextGuess-lastGuess) > 0.005) {

lastGuess = nextGuess;

nextGuess = 1/2 * (lastGuess + x/lastGuess);

}

[/code]

tron.

4: : : :

: : : : Problem says to repeatedly make guesses at the square root until I get closer and closer to the right guess. I store the last guess and the next guess. The next guess is computed as: (last guess + N / last guess). The first time through this process, we assume that the last guess is 1.0.

: : : :

: : : :

: : : : last guess = 1.0

: : : : next guess = (last guess + N / last guess)

: : : : loop as long as the absolute difference between the two guesses is greater than 0.005

: : : : save the next guess in last guess

: : : : next guess = (last guess + N / last guess)

: : : : end loop

: : : :

: : : : thanx for any help

: : : :

: : :

: : : Your question is already answered within your question:

: : :

: : : ...

: : : [b]loop[/b] as long as the absolute difference between the two guesses is greater than 0.005

: : : ...

: : : [b]end loop[/b]

: : :

: : : [code]

: : : ...

: : : while (the absolute difference between the two guesses is greater than 0.005) {

: : : ...

: : : }

: : : [/code]

: : :

: : : tron.

: : :

: : So the program would werk if i did this

: :

: : while(nextGuess < .005) {

: : nextGuess = 1/2 * (lastGuess + x/lastGuess)

: : nextGuess = lastGuess

: :

:

: No :-(

: Take a closer look at the pseudo code you'd posted in your original question.

:

: Here are some hints:

:

: - the difference between the two guesses: (nextGuess-lastGuess)

: - the absolut value of that difference: Math.abs(...)

: - loop as long as this difference is greater than 0.005: ">" not "<"

: - "save the next guess in last guess"

: - and after! that calculate the new guess

:

: If " (last guess + N / last guess)" means "1/2 * (lastGuess + x/lastGuess)" then your loop should look like this:

:

: [code]

: while(Math.abs(nextGuess-lastGuess) > 0.005) {

: lastGuess = nextGuess;

: nextGuess = 1/2 * (lastGuess + x/lastGuess);

: }

: [/code]

:

: tron.

:

thanx tron....word problems always stump me in the simplest of ways....I'm sorry to ask u about another possible problem but I'm having trouble with my compiler and was wondering if u could take a quick look at the finished program and point out any glaring mistakes.thanx

// Program2.java: Calculate square root of a number

import javax.swing.JOptionPane;

public class Program2 {

public static void main(String[] args) {

double number

double x

double lastGuess

double nextGuess

String numberstring = JOptionPane.showInputDialog(null,

"Enter a number to compute the square root for:", "Program 2 Input",

JOptionPane.QUESTION_MESSAGE);

number = double.parseDouble(numberString);

lastGuess = 1.0;

while(Math.abs(nextGuess-lastGuess) > 0.005) {

lastGuess = nextGuess;

nextGuess = 1/2 * (lastGuess + x/lastGuess);

}

If (number <= 0) {

JOptionPane.showMessageDialog(null, "The square root of the number: ",

+ number, "is ", + next guess, "i", JOptionPane.INFORMATION_MESSAGE);

}

else

JOptionPane.showMessageDialog(null, "The square root of the number:",

+ number, "is", + next guess, JOptionPane.INFORMATION_MESSAGE);

system.exit(0);

}

}

: thanx tron....word problems always stump me in the simplest of ways....I'm sorry to ask u about another possible problem but I'm having trouble with my compiler and was wondering if u could take a quick look at the finished program and point out any glaring mistakes.thanx

:

: // Program2.java: Calculate square root of a number

: import javax.swing.JOptionPane;

:

: public class Program2 {

: public static void main(String[] args) {

: double number

: double x

: double lastGuess

: double nextGuess

:

: String numberstring = JOptionPane.showInputDialog(null,

: "Enter a number to compute the square root for:", "Program 2 Input",

: JOptionPane.QUESTION_MESSAGE);

:

: number = double.parseDouble(numberString);

:

: lastGuess = 1.0;

: while(Math.abs(nextGuess-lastGuess) > 0.005) {

:

: lastGuess = nextGuess;

:

: nextGuess = 1/2 * (lastGuess + x/lastGuess);

:

: }

:

: If (number <= 0) {

: JOptionPane.showMessageDialog(null, "The square root of the number: ",

: + number, "is ", + next guess, "i", JOptionPane.INFORMATION_MESSAGE);

: }

: else

: JOptionPane.showMessageDialog(null, "The square root of the number:",

: + number, "is", + next guess, JOptionPane.INFORMATION_MESSAGE);

:

: system.exit(0);

: }

: }

:

:

Well, this code is really not compilable ... in this case you should try to correct the errors one by one before posting [b]such[/b] a code.

It seams that your teacher (and the one of some of the other posters, if it's not the same) has an affection for JOptionPane dialogs, doesn't (s)he ... ;-)

[code]

import javax.swing.*;

public class Program2 {

public static void main(String[] args) {

String numberstring = JOptionPane.showInputDialog(null, "Enter a number to compute the square root for:", "Program 2 Input", JOptionPane.QUESTION_MESSAGE);

double number = Double.parseDouble(numberstring);

boolean isComplex = (number < 0);

number = Math.abs(number);

double lastGuess = 1;

double nextGuess = (lastGuess + number/lastGuess) / 2;

while (Math.abs(nextGuess-lastGuess) > 0.005) {

lastGuess = nextGuess;

nextGuess = (lastGuess + number/lastGuess) / 2;

}

JOptionPane.showMessageDialog(null, "The square root of the number: " + number + " is " + nextGuess + (isComplex ? "i" : ""), "result", JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

}

}

[/code]

I strongly recommend that you not just use this code as is. You should analyze it since it has changed a lot, so you can use this information for future problems.

tron.

4: : thanx tron....word problems always stump me in the simplest of ways....I'm sorry to ask u about another possible problem but I'm having trouble with my compiler and was wondering if u could take a quick look at the finished program and point out any glaring mistakes.thanx

: :

: : // Program2.java: Calculate square root of a number

: : import javax.swing.JOptionPane;

: :

: : public class Program2 {

: : public static void main(String[] args) {

: : double number

: : double x

: : double lastGuess

: : double nextGuess

: :

: : String numberstring = JOptionPane.showInputDialog(null,

: : "Enter a number to compute the square root for:", "Program 2 Input",

: : JOptionPane.QUESTION_MESSAGE);

: :

: : number = double.parseDouble(numberString);

: :

: : lastGuess = 1.0;

: : while(Math.abs(nextGuess-lastGuess) > 0.005) {

: :

: : lastGuess = nextGuess;

: :

: : nextGuess = 1/2 * (lastGuess + x/lastGuess);

: :

: : }

: :

: : If (number <= 0) {

: : JOptionPane.showMessageDialog(null, "The square root of the number: ",

: : + number, "is ", + next guess, "i", JOptionPane.INFORMATION_MESSAGE);

: : }

: : else

: : JOptionPane.showMessageDialog(null, "The square root of the number:",

: : + number, "is", + next guess, JOptionPane.INFORMATION_MESSAGE);

: :

: : system.exit(0);

: : }

: : }

: :

: :

:

: Well, this code is really not compilable ... in this case you should try to correct the errors one by one before posting [b]such[/b] a code.

:

: It seams that your teacher (and the one of some of the other posters, if it's not the same) has an affection for JOptionPane dialogs, doesn't (s)he ... ;-)

:

: [code]

: import javax.swing.*;

:

: public class Program2 {

:

: public static void main(String[] args) {

: String numberstring = JOptionPane.showInputDialog(null, "Enter a number to compute the square root for:", "Program 2 Input", JOptionPane.QUESTION_MESSAGE);

: double number = Double.parseDouble(numberstring);

:

: boolean isComplex = (number < 0);

: number = Math.abs(number);

:

: double lastGuess = 1;

: double nextGuess = (lastGuess + number/lastGuess) / 2;

: while (Math.abs(nextGuess-lastGuess) > 0.005) {

: lastGuess = nextGuess;

: nextGuess = (lastGuess + number/lastGuess) / 2;

: }

:

: JOptionPane.showMessageDialog(null, "The square root of the number: " + number + " is " + nextGuess + (isComplex ? "i" : ""), "result", JOptionPane.INFORMATION_MESSAGE);

:

: System.exit(0);

: }

:

: }

: [/code]

:

: I strongly recommend that you not just use this code as is. You should analyze it since it has changed a lot, so you can use this information for future problems.

:

: tron.

:

thanx again...i'm lookin over at what u did and it most of it makes sense....i was just wondering tho...can i keep the last bit

If (number <= 0) {

: JOptionPane.showMessageDialog(null, "The square root of the number: ",

: + number, "is ", + next guess, "i", JOptionPane.INFORMATION_MESSAGE);

: }

: else

: JOptionPane.showMessageDialog(null, "The square root of the number:",

: + number, "is", + next guess, JOptionPane.INFORMATION_MESSAGE);

:

: system.exit(0);

: }

: }

we haven't really gotten into the boolean statements? will this still compile or is it still too sloppy? thanx....btw, do u recomment a good beginner book with alot of real world problems in it?