Solved

string without first and last character challenge

Posted on 2014-11-11
26
107 Views
Last Modified: 2014-11-21
Hi,

I am trying below challenge
http://codingbat.com/prob/p130896

i worte as below

public String withoutEnd(String str) {
int i=str.length();
if(i>=2)
return str.substring(1,2)+str.substring(2,i-1);
  
}

Open in new window


i am getting error as below

Compile problems:


Error:      public String withoutEnd(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.

please advise on how to fix and improve my code. Thanks in advance
0
Comment
Question by:gudii9
  • 15
  • 11
26 Comments
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public String withoutEnd(String str) {
int i=str.length();
String str2=null;
if(i>=2){
str2= str.substring(1,2)+str.substring(2,i-1);
}
return str2;
  
}

Open in new window


i tried as above still test cases failing

Expected      Run            
withoutEnd("Hello") → "ell"      "ell"      OK         
withoutEnd("java") → "av"      "av"      OK         
withoutEnd("coding") → "odin"      "odin"      OK         
withoutEnd("code") → "od"      "od"      OK         
withoutEnd("ab") → ""      "Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: -1 (line number:5)"      X         
withoutEnd("Chocolate!") → "hocolate"      "hocolate"      OK         
withoutEnd("kitten") → "itte"      "itte"      OK         
withoutEnd("woohoo") → "ooho"      "ooho"      OK         
other tests
OK       

please advise
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
What is "ab" without the first and last character, and how can you return it without giving substring an out of range index?

You might also think about whether there is a better way to write
str.substring(1,2)+str.substring(2,i-1)
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
What is "ab" without the first and last character, and how can you return it without giving substring an out of range index?

without first and last character "ab" is nothing so i got above error which make sense now.

"The string length will be at least 2. "

Above line given in problem challenge. Does that mean 2 is included or no(i mean string leght should be 3 or more)??
You might also think about whether there is a better way to write
str.substring(1,2)+str.substring(2,i-1)

Open in new window

i am still thinking to write in better way
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public String withoutEnd(String str) {
int i=str.length();
String str2=null;
if(i>2){
str2= str.substring(1,2)+str.substring(2,i-1);
return str2;
}

else
{
return "";
}
  
}

Open in new window


i modified as above and passing all tests. Does it look fine? please advise
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
What you wrote works.
But there is a simpler way to do it.
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
But there is a simpler way to do it.
can you please let me know?
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
If you simplify
str.substring(1,2)+str.substring(2,i-1);
then some other complications may also become unnecessary.
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
If you simplify
str.substring(1,2)+str.substring(2,i-1);
how to simplify. i am not getting better idea. please advise
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
How did you choose the number 2?
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
return a version without the first

In the challenge they said as above without first character so i choose 2 to start from 2nd
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public String withoutEnd(String str) {
int i=str.length();
String str2=null;
if(i>2){
str2= str.substring(1,i-1);
return str2;
}

else
{
return "";
}
  
}

Open in new window


I think i got what you meant. I was able to modify as above and able to pass all the tests. Is my code in right track?
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
On the right track.
Would
str.substring(1,i-1);
work in any other case besides
if(i>2){
?
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will not work as it looks string starting index 1 till 1 excluding 1
if i=1  then str.substring(1,i-1) become str.substring(1,0);//will not work as it looks string starting index 1 till 0 excluding 0
if i=0  then str.substring(1,i-1) become str.substring(1,-1);//will not work as it looks string starting index 1 till -1 excluding -1
0
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 
LVL 84

Expert Comment

by:ozo
Comment Utility
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will not work as it looks string starting index 1 till 1 excluding 1
false

if i=1  then str.substring(1,i-1) become str.substring(1,0);//will not work as it looks string starting index 1 till 0 excluding 0
true

if i=0  then str.substring(1,i-1) become str.substring(1,-1);//will not work as it looks string starting index 1 till -1 excluding -1
true
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will not work as it looks string starting index 1 till 1 excluding 1
false

i wonder why it is false.

How ti looks for string starting index 1 till index 1 excluding index 1.
please advise
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
What is the length of substring(1,i-1) ?
What is 1-1?
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
Length I am thinking as 0
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
yes
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will not work as it looks string starting index 1 till 1 excluding 1
false

I wonder why above answer is false. I am still thinking it will not work. please advise
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
the
it looks string starting index 1 till 1 excluding 1
part is true,
the
will not work
part is false

What is the length of the string you want to return if i==2?
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
What is the length of the string you want to return if i==2?
0
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
so it simply prints empty string if i==2?
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
As required.
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will not work as it looks string starting index 1 till 1 excluding 1

i have to correct as
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will  work as it looks string starting index 1 till 1 excluding 1
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
i have to correct as
if i=2  then str.substring(1,i-1) become str.substring(1,1);//will  work as it looks string starting index 1 till 1 excluding 1

and prints "".

I am correct in my understanding right?
please advise
0
 
LVL 84

Accepted Solution

by:
ozo earned 500 total points
Comment Utility
Yes, if i=2 str.substring(1,i-1) would be ""
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Windows Script Host (WSH) has been part of Windows since Windows NT4. Windows Script Host provides architecture for building dynamic scripts that consist of a core object model, scripting hosts, and scripting engines. The key components of Window…
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

763 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

9 Experts available now in Live!

Get 1:1 Help Now