I need to separate the following program that I wrote into t

I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one class into two.

  1 /**
2 Takes two user-given numbers in 14-base format,
3 turn them to 10-base to perform summation and multiplication,
4 and finnaly return answer back to 14-base format, which it displays.
5
6 @author Pedro Torres
7 Homework 6
8 */
9
10 import java.util.*;
11
12 public class H6_pedro {
13
14 /*
15 Promps user for two 14-based numbers and checks for validity.
16
17 @return The inputs as a string array.
18 */
19 public static String[] getInputs()
20 {
21
22 //input scannner object
23 Scanner scan = new Scanner(System.in);
24
25 //welcome message to get 2 numbers
26 System.out.println(\"To give you the summation and product of 2 numbers, \");
27 System.out.println(\"please enter the two 14-based numbers separated by \");
28 System.out.println(\"a space on the next line.\ \");
29 String numbers14 = scan.nextLine();
30
31 //splits input by space into array
32 String[] inputs = numbers14.split(\"\\\\s\");
33 String input1 = inputs[0];
34 String input2 = inputs[1];
35 boolean isInput1Valid = isValid(input1);
36 boolean isInput2Valid = isValid(input2);
37
38 //while either input is invalid display error message
39 while (!isInput1Valid || !isInput2Valid)
40 {
41 if (!isInput1Valid)
42 {
43 System.out.println(\"First number is not valid!\");
44 }
45 if (!isInput2Valid)
46 {
47 System.out.println(\"Second number is not valid!\");
48 }
49
50 //if numbers invalid asks for numbers again
51 System.out.println(\"Please re-enter your number in 14-base format.\ \");
52
53
54 input1 = scan.nextLine();
55 input2 = scan.nextLine();
56
57 isInput1Valid = isValid(input1);
58 isInput2Valid = isValid(input2);
59 }
60 //return inputs as array
61 return inputs;
62 }
63
64 /**
65 Checks the validity of the input.
66
67 @param input String number from user in 14-base format.
68 @return If input is valid or not.
69
70 */
71 public static boolean isValid (String input)
72 {
73 //checks string for numbers or letters a,j,q,k case insensitive.
74 for (int i = 0; i < input.length(); i++)
75 {
76 char ch = Character.toLowerCase(input.charAt(i));
77 if (!Character.isDigit(ch) && (ch != \'a\' && ch!= \'j\' && ch != \'q\' && ch != \'k\'))
78 {
79 return false;
80 }
81 }
82 return true;
83 }
84
85 /**
86 Turns 14-base input to 10-base format.
87
88 @param alienNum 14-base number.
89 @return result 10-base number.
90 */
91 public static int turnTo10Base (String alienNum)
92 {
93 int result = 0;
94
95 //checks through each character to get number value
96 for (int i = 0; i < alienNum.length(); i++) {
97 char c = alienNum.charAt(i);
98 int val = Character.getNumericValue(c);
99 if ( val == -1)
100 {
101 val = numberEquivalent(c);
102 }
103 val *= Math.pow(14,(alienNum.length()-1-i));
104 result += val;
105 }
106 return result;
107 }
108
109 /**
110 Turn 10-base to 14-base number.
111
112 @param num 10-base number.
113 @return result 14-base number.
114 */
115 public static String turnTo14Base (int num)
116 {
117 boolean done = false;
118 int quotient = num;
119 int remainder = 0;
120 String result = \"\";
121 while (!done)
122 {
123 //separates number by 14
124 remainder = quotient % 14;
125 quotient = quotient / 14;
126 result = letterEquivalent(remainder) + result;
127 if ( quotient == 0)
128 {
129 done = true;
130 }
131 }
132 return result;
133 }
134
135
136 /**
137 Turns letter into number.
138
139 @param ch Letter to be turned into number.
140 @return 10,11,12,13 Number equivalent.
141 */
142 public static int numberEquivalent (char ch) {
143 if (ch == \'a\')
144 {
145 return 10;
146 }
147 else if (ch == \'j\')
148 {
149 return 11;
150 }
151 else if (ch == \'q\')
152 {
153 return 12;
154 }
155 else if (ch == \'k\')
156 {
157 return 13;
158 }
159 else
160 {
161 return Integer.parseInt(String.valueOf(ch));
162 }
163 }
164
165 /**
166 Turns number into letter equivalent.
167
168 @param num Number to be converted.
169 @return A Letter equivalent of number.
170 @return J Letter equivalent of number.
171 @return Q Letter equivalent of number.
172 @return K Letter equivalent of number.
173 */
174 public static String letterEquivalent( int num)
175 {
176 if (num == 10)
177 {
178 return \"A\";
179 }
180 else if (num == 11)
181 {
182 return \"J\";
183 }
184 else if (num == 12)
185 {
186 return \"Q\";
187 }
188 else if (num == 13)
189 {
190 return \"K\";
191 }
192 else
193 {
194 return \"\" + num;
195 }
196 }
197
198 /**
199 Adds numbers in 10-base format and returns it in 14-base.
200
201 @param input1 First number to convert.
202 @param input2 Second number to convert.
203 @return retult Addition of numbers.
204 */
205 public static String addNums (String input1, String input2)
206 {
207 int firstInput = turnTo10Base(input1);
208 int secondInput = turnTo10Base(input2);
209 String result = turnTo14Base(firstInput + secondInput);
210
211 return result;
212 }
213
214 /**
215 Multiplies numbers in 10-base format and returns it in 14-base.
216
217 @param input1 14-base number to be multiplied.
218 @param input2 14-base number to be multiplied.
219 @return result Product of the numbers.
220 */
221 public static String productNums (String input1, String input2)
222 {
223 int firstInput = turnTo10Base(input1);
224 int secondInput = turnTo10Base(input2);
225 String result = turnTo14Base(firstInput * secondInput);
226
227 return result;
228
229 }
230
231 //main method that gets 14-base inputs to add and multiply then
232 //displays answers.
233 public static void main(String[] args)
234 {
235 String[] inputs = getInputs();
236 String answerSum = addNums(inputs[0], inputs[1]);
237 String answerProduct = productNums(inputs[0], inputs[1]);
238 System.out.println(\"The sum is \" + answerSum + \".\");
239 System.out.println(\"The product is \" + answerProduct + \".\");
240 }
241
242 }

Solution

Conversion.java

import java.util.*;

public class Conversion {
  
   //Default constructor
   public Conversion()
   {
      
   }

   /*
   * Promps user for two 14-based numbers and checks for validity.
   *
   * @return The inputs as a string array.
   */
   public String[] getInputs() {

       // input scanner object
       Scanner scan = new Scanner(System.in);

       // welcome message to get 2 numbers
       System.out
               .println(\"To give you the summation and product of 2 numbers, \");
       System.out
               .println(\"please enter the two 14-based numbers separated by \");
       System.out.println(\"a space on the next line.\ \");
       String numbers14 = scan.nextLine();

       // splits input by space into array
       String[] inputs = numbers14.split(\"\\\\s\");
       String input1 = inputs[0];
       String input2 = inputs[1];
       boolean isInput1Valid = isValid(input1);
       boolean isInput2Valid = isValid(input2);

       // while either input is invalid display error message
       while (!isInput1Valid || !isInput2Valid) {
           if (!isInput1Valid) {
               System.out.println(\"First number is not valid!\");
           }
           if (!isInput2Valid) {
               System.out.println(\"Second number is not valid!\");
           }

           // if numbers invalid asks for numbers again
           System.out
                   .println(\"Please re-enter your number in 14-base format.\ \");

           input1 = scan.nextLine();
           input2 = scan.nextLine();

           isInput1Valid = isValid(input1);
           isInput2Valid = isValid(input2);
       }
       // return inputs as array
       return inputs;
   }

   /**
   * Checks the validity of the input.
   *
   * @param input
   * String number from user in 14-base format.
   * @return If input is valid or not.
   */
   public boolean isValid(String input) {
       // checks string for numbers or letters a,j,q,k case insensitive.
       for (int i = 0; i < input.length(); i++) {
           char ch = Character.toLowerCase(input.charAt(i));
           if (!Character.isDigit(ch)
                   && (ch != \'a\' && ch != \'j\' && ch != \'q\' && ch != \'k\')) {
               return false;
           }
       }
       return true;
   }

   /**
   * Turns 14-base input to 10-base format.
   *
   * @param alienNum
   * 14-base number.
   * @return result 10-base number.
   */
   public int turnTo10Base(String alienNum) {
       int result = 0;

       // checks through each character to get number value
       for (int i = 0; i < alienNum.length(); i++) {
           char c = alienNum.charAt(i);
           int val = Character.getNumericValue(c);
           if (val == -1) {
               val = numberEquivalent(c);
           }
           val *= Math.pow(14, (alienNum.length() - 1 - i));
           result += val;
       }
       return result;
   }

   /**
   * Turn 10-base to 14-base number.
   *
   * @param num
   * 10-base number.
   * @return result 14-base number.
   */
   public String turnTo14Base(int num) {
       boolean done = false;
       int quotient = num;
       int remainder = 0;
       String result = \"\";
       while (!done) {
           // separates number by 14
           remainder = quotient % 14;
           quotient = quotient / 14;
           result = letterEquivalent(remainder) + result;
           if (quotient == 0) {
               done = true;
           }
       }
       return result;
   }

   /**
   * Turns letter into number.
   *
   * @param ch
   * Letter to be turned into number.
   * @return 10,11,12,13 Number equivalent.
   */
   public int numberEquivalent(char ch) {
       if (ch == \'a\') {
           return 10;
       } else if (ch == \'j\') {
           return 11;
       } else if (ch == \'q\') {
           return 12;
       } else if (ch == \'k\') {
           return 13;
       } else {
           return Integer.parseInt(String.valueOf(ch));
       }
   }

   /**
   * Turns number into letter equivalent.
   *
   * @param num
   * Number to be converted.
   * @return A Letter equivalent of number.
   * @return J Letter equivalent of number.
   * @return Q Letter equivalent of number.
   * @return K Letter equivalent of number.
   */
   public String letterEquivalent(int num) {
       if (num == 10) {
           return \"A\";
       } else if (num == 11) {
           return \"J\";
       } else if (num == 12) {
           return \"Q\";
       } else if (num == 13) {
           return \"K\";
       } else {
           return \"\" + num;
       }
   }

   /**
   * Adds numbers in 10-base format and returns it in 14-base.
   *
   * @param input1
   * First number to convert.
   * @param input2
   * Second number to convert.
   * @return retult Addition of numbers.
   */
   public String addNums(String input1, String input2) {
       int firstInput = turnTo10Base(input1);
       int secondInput = turnTo10Base(input2);
       String result = turnTo14Base(firstInput + secondInput);

       return result;
   }

   /**
   * Multiplies numbers in 10-base format and returns it in 14-base.
   *
   * @param input1
   * 14-base number to be multiplied.
   * @param input2
   * 14-base number to be multiplied.
   * @return result Product of the numbers.
   */
   public String productNums(String input1, String input2) {
       int firstInput = turnTo10Base(input1);
       int secondInput = turnTo10Base(input2);
       String result = turnTo14Base(firstInput * secondInput);

       return result;

   }
}

______________________

ConversionClient.java

public class ConversionClient {

   public static void main(String[] args) {
       Conversion conv=new Conversion();
       String[] inputs = conv.getInputs();
       String answerSum = conv.addNums(inputs[0], inputs[1]);
       String answerProduct = conv.productNums(inputs[0], inputs[1]);
       System.out.println(\"The sum is \" + answerSum + \".\");
System.out.println(\"The product is \" + answerProduct + \".\");
   }

}

_________________

Output:

To give you the summation and product of 2 numbers,
please enter the two 14-based numbers separated by
a space on the next line.

17 13
The sum is 2A.
The product is 1J7.

____________Thank You

I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c
I need to separate the following program that I wrote into two classes. One reusable class and one with client code. I\'m confused on how to separate this one c

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site