Solved

return string first half challenge

Posted on 2014-11-11
20
224 Views
Last Modified: 2014-11-26
Hi,

I am trying below challenge
http://codingbat.com/prob/p172267
i wrote as below
public String firstHalf(String str) {
int i=str.length();
if((i/2)==0)
return str.substring(0,(i/2)-1);
  
}

Open in new window


I got compilation error as below

Compile problems:


Error:      public String firstHalf(String str) {
                    ^^^^^^^^^^^^^^^^^^^^^
This method must return a result of type String

Possible problem: the if-statement structure may theoretically
allow a run to reach the end of the method without calling return.
Consider adding a last line in the method return some_value;
so a value is always returned.

see Example Code to help with compile proble

How to improve and fix my code
Please advise. thanks in advance
0
Comment
Question by:gudii9
  • 10
  • 10
20 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 40435430
Follow the advice given in the message, and add a return statement that happens even when the if condition is not satisfied.

Or consider whether you even need the if condition.
0
 
LVL 7

Author Comment

by:gudii9
ID: 40435675
public String firstHalf(String str) {
String str2=null;
int i=str.length();
if((i%2)==0)
str2= str.substring(0,(i/2));
return str2;
  
}

Open in new window


I modified as above and pased all tests

Expected      Run            
firstHalf("WooHoo") → "Woo"      "Woo"      OK         
firstHalf("HelloThere") → "Hello"      "Hello"      OK         
firstHalf("abcdef") → "abc"      "abc"      OK         
firstHalf("ab") → "a"      "a"      OK         
firstHalf("") → ""      ""      OK         
firstHalf("0123456789") → "01234"      "01234"      OK         
firstHalf("kitten") → "kit"      "kit"      OK         
other tests
OK         


Does my solution look fine?
please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40435714
Your solution works, although it is doing something it does not need to do.
0
 
LVL 7

Author Comment

by:gudii9
ID: 40435724
although it is doing something it does not need to do.

i wonder what it is doing extra. please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40436536
When would you want to skip line 5?
0
 
LVL 7

Author Comment

by:gudii9
ID: 40437370
When would you want to skip line 5?
if i skip line 5 i cannot get first half right. Please advise what i am missing
0
 
LVL 84

Expert Comment

by:ozo
ID: 40437443
Are you saying that you don't want to skip line 5?
0
 
LVL 7

Author Comment

by:gudii9
ID: 40438149
public String firstHalf(String str) {
String str2=null;
int i=str.length();
if((i%2)==0)
//str2= str.substring(0,(i/2));
return str2;
  
}

Open in new window


when i skip line 5 i am getting compilation error



Compile problems:


Error:      public String firstHalf(String str) {
                    ^^^^^^^^^^^^^^^^^^^^^
This method must return a result of type String

Possible problem: the if-statement structure may theoretically
allow a run to reach the end of the method without calling return.
Consider adding a last line in the method return some_value;
so a value is always returned.

see Example Code to help with compile problems
0
 
LVL 7

Author Comment

by:gudii9
ID: 40438152
Your solution works, although it is doing something it does not need to do.

I would like to know what my code doing something it does not need to do so that i correct it. Please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40438880
You said
if i skip line 5 i cannot get first half right.
So don't skip line 5.
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 7

Author Comment

by:gudii9
ID: 40441169
Your solution works, although it is doing something it does not need to do.


I would like to know what my code doing something it does not need to do so that i correct it. Please advise

please advise on this.
0
 
LVL 84

Expert Comment

by:ozo
ID: 40441210
It is not necessary to cause line 5 to be skipped.
0
 
LVL 7

Author Comment

by:gudii9
ID: 40444077
public String firstHalf(String str) {
String str2=null;
int i=str.length();
if((i%2)==0)
str2= str.substring(0,(i/2));
return str2;
 
}

so what is the improvement i can make to my code.

I did not get your below point
although it is doing something it does not need to do.

please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40444188
the
if((i%2)==0)
causes line 5 to be skipped when i%2!=0
causing line 5 to be skipped is not necessary
0
 
LVL 7

Author Comment

by:gudii9
ID: 40456035
public String firstHalf(String str) {
String str2=null;
int i=str.length();
if((i%2)==0)
//str2= str.substring(0,(i/2));
return str.substring(0,i/2);
  
}

Open in new window


are you saying directly returning as above is preferable.

I am getting as below

compile problems:


Error:      public String firstHalf(String str) {
                    ^^^^^^^^^^^^^^^^^^^^^
This method must return a result of type String

Possible problem: the if-statement structure may theoretically
allow a run to reach the end of the method without calling return.
Consider adding a last line in the method return some_value;
so a value is always returned.

see Example Code to help with compile problems


please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40456331
It does not return anything when (i%2)!=0
0
 
LVL 7

Author Comment

by:gudii9
ID: 40457709
the
if((i%2)==0)
causes line 5 to be skipped when i%2!=0
causing line 5 to be skipped is not necessary

i still did not understand what you mean.

My code now works and passes all tests as below
public String firstHalf(String str) {
String str2=null;
int i=str.length();
if((i%2)==0)
//str2= str.substring(0,(i/2));
return str.substring(0,i/2);
else
return null;
  
}

Open in new window


So i took care of your suggestion in my above code right?
0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
ID: 40457722
Yes.
(and changing
   return null;
to
  return str+"kitten";
would also pass all tests)
0
 
LVL 7

Author Comment

by:gudii9
ID: 40463230
public String firstHalf(String str) {
String str2=null;
int i=str.length();
if((i%2)==0)
//str2= str.substring(0,(i/2));
return str.substring(0,i/2);
else
return str+"kitten";
 
}


i changed as above and passed all tests. But how it passed all tests. For odd number string (say "xyz") it goes into else loop right. then str+"kitten" should return "xyzkitten"

Is xyzkitten correct value?
please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40463439
The challenge says
Given a string of even length
so (i%2)==0 is never false

Is xyzkitten correct value?
We don't know.  The challenge says nothing about what firstHalf("xyz") should yield.
However, there may be arguments for expecting "xy" or "x" rather than "null"
(which is what firstHalf("nullings") should yield)
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
eclipse package explorer vs project explorer view 2 84
Securing Jmx Console and web console 2 64
Groovy:unable to resolve class error 2 69
Problem to picture file 20 34
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now