I need help with this java programming project. I have to take an already workin
ID: 3824826 • Letter: I
Question
I need help with this java programming project. I have to take an already working program and add a gui to it. The program deals with recursion. You enter in a number and it's supposed to do the following. Say you entered in 2 for example, this is what you should see.
Enter an integer:
2
The digits in that number are:
two
If you add ten to that number,
the digits in the new number are:
one two
My program boots up, but when I enter in a number, the program just closes instead. I hope someone can help me fix this.
Here is my code.
import javax.swing.*;
import java.util.Scanner;
public class RecursionDemoGUI
{
public static void main(String[] args)
{
Scanner outputStream = null;
String InputText = JOptionPane.showInputDialog("Enter an integer:");
Scanner keyboard = new Scanner(System.in);;
int number = keyboard.nextInt( );
JOptionPane.showMessageDialog(null,"The digits in that number are:");
displayAsWords(number);
System.out.println( );
JOptionPane.showMessageDialog(null,"If you add ten to that number, ");
JOptionPane.showMessageDialog(null,"the digits in the new number are:");
number = number + 10;
displayAsWords(number);
System.out.println( );
}
/**
Precondition: number >= 0
Displays the digits in number as words.
*/
public static void displayAsWords(int number)
{
if (number < 10)
System.out.print(getWordFromDigit(number) + " ");
else //number has two or more digits
{
displayAsWords(number / 10);
System.out.print(getWordFromDigit(number % 10) + " ");
}
}
/**
Precondition: 0 <= digit <= 9
Returns the word for the argument digit.
*/
private static String getWordFromDigit(int digit)
{
String result = null;
switch (digit)
{
case 0: result = "zero"; break;
case 1: result = "one"; break;
case 2: result = "two"; break;
case 3: result = "three"; break;
case 4: result = "four"; break;
case 5: result = "five"; break;
case 6: result = "six"; break;
case 7: result = "seven"; break;
case 8: result = "eight"; break;
case 9: result = "nine"; break;
default:
System.out.println("Fatal Error.");
System.exit(0);
break;
}
return result;
}
}
Explanation / Answer
Hi, I have fixed the issue.
It is working fine now.
Please test and let me know in case of any issue.
import javax.swing.*;
import java.util.Scanner;
public class RecursionDemoGUI
{
public static void main(String[] args)
{
Scanner outputStream = null;
String InputText = JOptionPane.showInputDialog("Enter an integer:");
int number = Integer.parseInt(InputText);
JOptionPane.showMessageDialog(null,"The digits in that number are:");
displayAsWords(number);
//System.out.println( );
JOptionPane.showMessageDialog(null,"If you add ten to that number, ");
JOptionPane.showMessageDialog(null,"the digits in the new number are:");
number = number + 10;
displayAsWords(number);
System.out.println( );
}
/**
Precondition: number >= 0
Displays the digits in number as words.
*/
public static void displayAsWords(int number)
{
if (number < 10){
JOptionPane.showMessageDialog(null, getWordFromDigit(number) + " ");
}
else //number has two or more digits
{
displayAsWords(number / 10);
JOptionPane.showMessageDialog(null,getWordFromDigit(number % 10) + " ");
}
}
/**
Precondition: 0 <= digit <= 9
Returns the word for the argument digit.
*/
private static String getWordFromDigit(int digit)
{
String result = null;
switch (digit)
{
case 0: result = "zero"; break;
case 1: result = "one"; break;
case 2: result = "two"; break;
case 3: result = "three"; break;
case 4: result = "four"; break;
case 5: result = "five"; break;
case 6: result = "six"; break;
case 7: result = "seven"; break;
case 8: result = "eight"; break;
case 9: result = "nine"; break;
default:
System.out.println("Fatal Error.");
System.exit(0);
break;
}
return result;
}
}