package lab1;   /** * A utility class containing several recursive methods * * * * For all methods in this API, you are forbidden to use any loops, * String or List based methods such as "contains", or methods that use regular expressions * * * */ public final class Lab1 { /** * This is empty by design, Lab class cannot be instantiated */ privateLab1(){ // empty by design }   /** * Returns the product of a consecutive set of numbers from start * to end . * * @param start is an integer number * @param end is an integer number * @return the product of start * (start + 1) * ..*. + end * @pre. * start and end are small enough to let * this method return an int. This means the return value at most * requires 4 bytes and no overflow would happen. */ publicstaticintproduct(ints,inte){ if(s==e){ returne; }else{ returns*product(s+1,e); } }   publicstaticvoidmain(String[]args){ ints=1; inte=5; intresult=product(s,e); System.out.println("The product is: "+result);     return-999; }   /** * This method creates a string using the given char by repeating the character * n times. * * @param first is the given character by which the string is made. * @param n is the number of characters in the final string * @return a string made of the given character. * * @pre. n is not negative. */ publicstaticStringmakeString(charfirst,intn){ returnnull; charfirst='#'; intn=5; Stringoutput=makeString(first,n); System.out.println(output); }   publicstaticStringmakeString(charch,intn){ if(n<=0){ return""; }else{ returnch+makeString(ch,n-1); } }     /** * This method accepts a positive integer n and that returns n characters: The * middle character should always be an asterisk ("*"). If you are writing an * even number of characters, there will be two asterisks in the middle ("**"). * Before the asterisk(s) you should add less-than characters {@code ("<")}. * After the asterisk(s) you should add greater-than characters {@code (">")}. * * @param n is the total number of strings returned by the method * @return returns a string made of 1 or 2 stars between a number of * {@code ("<")} and {@code (">")} characters. The string length should * be equal to n * @pre. the integer n should be positive */ publicstaticStringwriteChars(intn){ returnnull; System.out.println(writeChars(1));// Output: * System.out.println(writeChars(2));// Output: ** System.out.println(writeChars(3));// Output: <*> System.out.println(writeChars(4));// Output: <**> System.out.println(writeChars(5));// Output: <<*>> System.out.println(writeChars(6));// Output: <<**>> System.out.println(writeChars(7));// Output: <<<*>>> System.out.println(writeChars(8));// Output: <<<**>>> }   publicstaticStringwriteChars(intn){ if(n==1){ return"*"; }elseif(n==2){ return"**"; }else{ return"<"+writeChars(n-2)+">"; } } }   /** * This method returns a substring of the given input string that is enclosed in * two given characters. * * @param str is a string that contains at least two characters including * open and close * @param open is a character at the beginning of the string that should be * returned. * @param close is a character at the end of the string that should be returned. * @return returns a string enclosed in two given characters of * open and close . * @pre. The given str * contains only one open and one close * character. */ publicstaticStringgetSubstring(Stringinput,charfirst,charsecond){ returnnull; Stringinput="Hello (there] how are you?"; charfirst='('; charsecond=']'; Stringoutput=extractEnclosedSubstring(input,first,second); System.out.println(output);// Output: there }   publicstaticStringextractEnclosedSubstring(Stringinput,charfirst,charsecond){ intIndexone=input.indexOf(first); intIndextwo=input.indexOf(second);   if(Indexone!=-1&&Indextwo!=-1&&Indextwo>Indexone){ returninput.substring(Indexone+1,Indextwo); }else{ returnnull;// Enclosing characters not found or in incorrect order } } }       /** * This method converts a decimal value into its binary representation. * * @param value is a positive integer number * @return the binary representation of the input. * @pre. the input is a positive * integer number. */   publicstaticStringdecimalToBinary(intdec){ intdec=23; Stringbinary=decimalToBinary(dec); System.out.println(binary); }   publicstaticStringdecimalToBinary(intn){ if(n==0){ return"0"; }elseif(n==1){ return"1"; }else{ intq=n/2; intr=n%2; returndecimalToBinary(q)+Integer.toString(r); } } }     returnnull; } heres my code in eclipse IDE, can you please fix the errors because it will not run.  }

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

package lab1;

 

/**

* A utility class containing several recursive methods

*

* <pre>

*

* For all methods in this API, you are forbidden to use any loops,

* String or List based methods such as "contains", or methods that use regular expressions

* </pre>

*

*

*/

public final class Lab1 {

/**

* This is empty by design, Lab class cannot be instantiated

*/

privateLab1(){

// empty by design

}

 

/**

* Returns the product of a consecutive set of numbers from <code> start </code>

* to <code> end </code>.

*

* @param start is an integer number

* @param end is an integer number

* @return the product of start * (start + 1) * ..*. + end

* @pre.

* <code> start </code> and <code> end </code> are small enough to let

* this method return an int. This means the return value at most

* requires 4 bytes and no overflow would happen.

*/

publicstaticintproduct(ints,inte){

if(s==e){

returne;

}else{

returns*product(s+1,e);

}

}

 

publicstaticvoidmain(String[]args){

ints=1;

inte=5;

intresult=product(s,e);

System.out.println("The product is: "+result);

 

 

return-999;

}

 

/**

* This method creates a string using the given char by repeating the character

* <code> n </code> times.

*

* @param first is the given character by which the string is made.

* @param n is the number of characters in the final string

* @return a string made of the given character.

*

* @pre. n is not negative.

*/

publicstaticStringmakeString(charfirst,intn){

returnnull;

charfirst='#';

intn=5;

Stringoutput=makeString(first,n);

System.out.println(output);

}

 

publicstaticStringmakeString(charch,intn){

if(n<=0){

return"";

}else{

returnch+makeString(ch,n-1);

}

}

 

 

/**

* This method accepts a positive integer n and that returns n characters: The

* middle character should always be an asterisk ("*"). If you are writing an

* even number of characters, there will be two asterisks in the middle ("**").

* Before the asterisk(s) you should add less-than characters {@code ("<")}.

* After the asterisk(s) you should add greater-than characters {@code (">")}.

*

* @param n is the total number of strings returned by the method

* @return returns a string made of 1 or 2 stars between a number of

* {@code ("<")} and {@code (">")} characters. The string length should

* be equal to n

* @pre. the integer n should be positive

*/

publicstaticStringwriteChars(intn){

returnnull;

System.out.println(writeChars(1));// Output: *

System.out.println(writeChars(2));// Output: **

System.out.println(writeChars(3));// Output: <*>

System.out.println(writeChars(4));// Output: <**>

System.out.println(writeChars(5));// Output: <<*>>

System.out.println(writeChars(6));// Output: <<**>>

System.out.println(writeChars(7));// Output: <<<*>>>

System.out.println(writeChars(8));// Output: <<<**>>>

}

 

publicstaticStringwriteChars(intn){

if(n==1){

return"*";

}elseif(n==2){

return"**";

}else{

return"<"+writeChars(n-2)+">";

}

}

}

 

/**

* This method returns a substring of the given input string that is enclosed in

* two given characters.

*

* @param str is a string that contains at least two characters including

* <code> open </code> and <code> close </code>

* @param open is a character at the beginning of the string that should be

* returned.

* @param close is a character at the end of the string that should be returned.

* @return returns a string enclosed in two given characters of

* <code> open </code> and <code> close </code>.

* @pre. The given str

* contains only one <code> open </code> and one <code> close </code>

* character.

*/

publicstaticStringgetSubstring(Stringinput,charfirst,charsecond){

returnnull;

Stringinput="Hello (there] how are you?";

charfirst='(';

charsecond=']';

Stringoutput=extractEnclosedSubstring(input,first,second);

System.out.println(output);// Output: there

}

 

publicstaticStringextractEnclosedSubstring(Stringinput,charfirst,charsecond){

intIndexone=input.indexOf(first);

intIndextwo=input.indexOf(second);

 

if(Indexone!=-1&&Indextwo!=-1&&Indextwo>Indexone){

returninput.substring(Indexone+1,Indextwo);

}else{

returnnull;// Enclosing characters not found or in incorrect order

}

}

}

 

 

 

/**

* This method converts a decimal value into its binary representation.

*

* @param value is a positive integer number

* @return the binary representation of the input.

* @pre. the input is a positive

* integer number.

*/

 

publicstaticStringdecimalToBinary(intdec){

intdec=23;

Stringbinary=decimalToBinary(dec);

System.out.println(binary);

}

 

publicstaticStringdecimalToBinary(intn){

if(n==0){

return"0";

}elseif(n==1){

return"1";

}else{

intq=n/2;

intr=n%2;

returndecimalToBinary(q)+Integer.toString(r);

}

}

}

 

 

returnnull;

}

heres my code in eclipse IDE, can you please fix the errors because it will not run. 

}

Expert Solution
Step 1: Introduction:

The implementation of various common operations such as calculating the product of a range of numbers, constructing a string of repetitive characters, and converting decimal to binary is achieved using recursive techniques in Java. Additionally, the program demonstrates creating a string pattern and extracting a substring enclosed between two specified characters from a given string. The main objective is to showcase the use of recursive methods to solve problems without the use of loops or built-in string/list methods.

Algorithm:

  1. Product of Numbers:

    • Base Case: If the start is equal to the end, return the value of end.
    • Recursive Case: Multiply the start value with the result of the method called with start incremented by 1.
  2. Create String:

    • Base Case: If n is zero or negative, return an empty string.
    • Recursive Case: Concatenate the character to the result of the method called with n decremented by 1.
  3. Write Characters:

    • Base Case: If n is 1, return "*"; if n is 2, return "**".
    • Recursive Case: Return a string with "<", concatenated with the result of the method called with n decremented by 2, concatenated with ">".
  4. Extract Enclosed Substring:

    • Locate the indices of the opening and closing characters.
    • Extract and return the substring between these characters.
  5. Decimal to Binary:

    • Base Case: If n is 0, return "0"; if n is 1, return "1".
    • Recursive Case: Divide n by 2 and concatenate the remainder to the result of the method called with the quotient.
steps

Step by step

Solved in 6 steps with 1 images

Blurred answer
Knowledge Booster
Array
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education