|
|
Necklace Problem - Number Theory | ||
Discussion by aaronpatel with 8 Replies.
Last Update: October 6, 2007, 2:50 pm | |||
begins with two single-digit numbers. The next number is obtained by adding the first two numbers
together and saving only the ones digit. This process is repeated until the “necklace” closes by returning
to the original two numbers. For example, if the starting two numbers are 1 and 8, twelve steps are
required to close the necklace: 1 8 9 7 6 3 9 2 1 3 4 7 1 8
Create a Necklace application that prompts the user for two single-digit integers and then displays the
sequence and the number of steps taken. The application output should look similar to:
I can't seem to figure it out.
Any help?
I tried doing this, but there is no output. It seems to just freeze my computer.
CODE
public class Necklace {public static void main(String[] args) {
int originalFirstNumber = IBIO.inputInt("Enter the first starting number: ");
int originalSecondNumber = IBIO.inputInt("Enter the second starting number: ");
System.out.println(necklace(originalFirstNumber, originalSecondNumber));
}
private static String necklace(int originalFirstNumber,int originalSecondNumber)
{
String output;
int firstNumber = originalFirstNumber;
int secondNumber = originalSecondNumber;
do{
output = originalFirstNumber + " " + originalSecondNumber + " ";
int result = firstNumber + secondNumber;
String resultInString = " " + result;
int lastNumberOfResult = resultInString.charAt(resultInString.length() - 1);
firstNumber = secondNumber;
secondNumber = lastNumberOfResult;
output += secondNumber + " ";
}
while(!(firstNumber == originalFirstNumber) && !(secondNumber == originalSecondNumber));
return output;
}
}
Thanks.
Wed Oct 3, 2007 Reply New Discussion
oh and you might wanna tell us what language that is so we can help you?
Thu Oct 4, 2007 Reply New Discussion
Next, the condition in while should be written as !(firstNumber == originalFirstNumber && secondNumber == originalSecondNumber). Notice that the NOT operator surrounds the entire condition and not individually on both.
This is the correct code:-
CODE
public class Necklace {public static void main(String[] args) {
int originalFirstNumber = IBIO.inputInt("Enter the first starting number: ");
int originalSecondNumber = IBIO.inputInt("Enter the second starting number: ");
System.out.println(necklace(originalFirstNumber, originalSecondNumber));
}
private static String necklace(int originalFirstNumber,int originalSecondNumber)
{
String output;
int firstNumber = originalFirstNumber;
int secondNumber = originalSecondNumber;
output = originalFirstNumber + " " + originalSecondNumber + " ";
do{
int result = firstNumber + secondNumber;
String resultInString = " " + result;
int lastNumberOfResult = resultInString.charAt(resultInString.length() - 1);
firstNumber = secondNumber;
secondNumber = lastNumberOfResult;
output += secondNumber + " ";
}
while(!(firstNumber == originalFirstNumber && secondNumber == originalSecondNumber));
return output;
}
}
P.S. - Instead of converting the result to a string and getting the last character, you can use the modulus operator (%) to get the last digit of any number. The updated code inside the do-while loop block would be as follows:-
CODE
int result = firstNumber + secondNumber;int lastNumberOfResult = result % 10;
firstNumber = secondNumber;
secondNumber = lastNumberOfResult;
output += secondNumber + " ";
Thu Oct 4, 2007 Reply New Discussion
Thu Oct 4, 2007 Reply New Discussion
LOL!
Thu Oct 4, 2007 Reply New Discussion
Use the replacement code I gave for the body of the do-while loop which gets rid of the need to convert the result into the string. That should do it.
Thu Oct 4, 2007 Reply New Discussion
i have absolutely no experience what so ever in java so i hope that turbopoweredmaxsteel's code was right, lol
Fri Oct 5, 2007 Reply New Discussion
Thanks for all your help...
Sat Oct 6, 2007 Reply New Discussion
I love how such simple programs can take 100% cpu usage. I mean from a technical viewpoint it makes perfect sense (if nothing else needs the extra cpu cycles they devote it all to something that does need it, even if all the program is doing is adding infinitly to an increment variable) but from a non-technical viewpoint it still amuses me haha.
Sat Oct 6, 2007 Reply New Discussion
Graphcal User Interfaces In Java How do you make them? (8)
|
(7) Create Dynamic Gui ?
|
Index




