Similar code, yet one version does not return a String when it should
For a class exercise, both my friend and I wrote a similar code. Hers works while mine gives out:
Error: This method must return a result of type java.lang.String
Her code :
public static String alphaString (String a, String b) {
for (int i=0; i<a.length(); i++){
if ((int)(a.charAt(i)) < ((int)(b.charAt(i)))) {
return a;
}
if ((int)(a.charAt(i)) > ((int)(b.charAt(i)))) {
return b;
}
}
return ("these are the same words") ;
}
My code :
// method that takes two Strings and returns the one that comes first in the alphabet
// alphaString("banana", "apple")--> "apple"
// alphaString("snake", "squirrel")--> "snake".
public static String alphaString(String s1, String s2) {
for (int i = 0; i<s1.length(); i++ ) {
if (s1.charAt(i)<s2.charAt(i)) {
return s1;
}
if (s1.charAt(i)>s2.charAt(i)){
return s2;
}
}
Now, I can tell that our variables are named differently and that she uses (int) (though I don't think it is necessary). I don't understand why her code works and mine not. If I try to also add the (int) and make the code even more similar, I still get the error.
Does anyone have any idea why that might be?
java string for-loop types alphabetical
|
show 4 more comments
For a class exercise, both my friend and I wrote a similar code. Hers works while mine gives out:
Error: This method must return a result of type java.lang.String
Her code :
public static String alphaString (String a, String b) {
for (int i=0; i<a.length(); i++){
if ((int)(a.charAt(i)) < ((int)(b.charAt(i)))) {
return a;
}
if ((int)(a.charAt(i)) > ((int)(b.charAt(i)))) {
return b;
}
}
return ("these are the same words") ;
}
My code :
// method that takes two Strings and returns the one that comes first in the alphabet
// alphaString("banana", "apple")--> "apple"
// alphaString("snake", "squirrel")--> "snake".
public static String alphaString(String s1, String s2) {
for (int i = 0; i<s1.length(); i++ ) {
if (s1.charAt(i)<s2.charAt(i)) {
return s1;
}
if (s1.charAt(i)>s2.charAt(i)){
return s2;
}
}
Now, I can tell that our variables are named differently and that she uses (int) (though I don't think it is necessary). I don't understand why her code works and mine not. If I try to also add the (int) and make the code even more similar, I still get the error.
Does anyone have any idea why that might be?
java string for-loop types alphabetical
What is the last statement of her method? What is the last statement of your method? What is the difference?
– camickr
Nov 23 '18 at 2:21
What would her method return if the first string was empty (length 0)? What would yours return?
– David
Nov 23 '18 at 2:21
@David mine wouldn't return anything at all because of the error, while hers would return "these are the same words"
– Patricia Manarazan
Nov 23 '18 at 2:24
1
@PatriciaManarazan: "mine wouldn't return anything at all" - That is the error. The compiler has to ensure that the method will always return the advertised type. There exists a logical condition where your method wouldn't return anything, which is invalid.
– David
Nov 23 '18 at 2:25
@camickr hers: return ("these are the same words") ; mine: return s2;
– Patricia Manarazan
Nov 23 '18 at 2:26
|
show 4 more comments
For a class exercise, both my friend and I wrote a similar code. Hers works while mine gives out:
Error: This method must return a result of type java.lang.String
Her code :
public static String alphaString (String a, String b) {
for (int i=0; i<a.length(); i++){
if ((int)(a.charAt(i)) < ((int)(b.charAt(i)))) {
return a;
}
if ((int)(a.charAt(i)) > ((int)(b.charAt(i)))) {
return b;
}
}
return ("these are the same words") ;
}
My code :
// method that takes two Strings and returns the one that comes first in the alphabet
// alphaString("banana", "apple")--> "apple"
// alphaString("snake", "squirrel")--> "snake".
public static String alphaString(String s1, String s2) {
for (int i = 0; i<s1.length(); i++ ) {
if (s1.charAt(i)<s2.charAt(i)) {
return s1;
}
if (s1.charAt(i)>s2.charAt(i)){
return s2;
}
}
Now, I can tell that our variables are named differently and that she uses (int) (though I don't think it is necessary). I don't understand why her code works and mine not. If I try to also add the (int) and make the code even more similar, I still get the error.
Does anyone have any idea why that might be?
java string for-loop types alphabetical
For a class exercise, both my friend and I wrote a similar code. Hers works while mine gives out:
Error: This method must return a result of type java.lang.String
Her code :
public static String alphaString (String a, String b) {
for (int i=0; i<a.length(); i++){
if ((int)(a.charAt(i)) < ((int)(b.charAt(i)))) {
return a;
}
if ((int)(a.charAt(i)) > ((int)(b.charAt(i)))) {
return b;
}
}
return ("these are the same words") ;
}
My code :
// method that takes two Strings and returns the one that comes first in the alphabet
// alphaString("banana", "apple")--> "apple"
// alphaString("snake", "squirrel")--> "snake".
public static String alphaString(String s1, String s2) {
for (int i = 0; i<s1.length(); i++ ) {
if (s1.charAt(i)<s2.charAt(i)) {
return s1;
}
if (s1.charAt(i)>s2.charAt(i)){
return s2;
}
}
Now, I can tell that our variables are named differently and that she uses (int) (though I don't think it is necessary). I don't understand why her code works and mine not. If I try to also add the (int) and make the code even more similar, I still get the error.
Does anyone have any idea why that might be?
java string for-loop types alphabetical
java string for-loop types alphabetical
edited Nov 23 '18 at 2:20
camickr
274k15126239
274k15126239
asked Nov 23 '18 at 2:18
Patricia Manarazan
206
206
What is the last statement of her method? What is the last statement of your method? What is the difference?
– camickr
Nov 23 '18 at 2:21
What would her method return if the first string was empty (length 0)? What would yours return?
– David
Nov 23 '18 at 2:21
@David mine wouldn't return anything at all because of the error, while hers would return "these are the same words"
– Patricia Manarazan
Nov 23 '18 at 2:24
1
@PatriciaManarazan: "mine wouldn't return anything at all" - That is the error. The compiler has to ensure that the method will always return the advertised type. There exists a logical condition where your method wouldn't return anything, which is invalid.
– David
Nov 23 '18 at 2:25
@camickr hers: return ("these are the same words") ; mine: return s2;
– Patricia Manarazan
Nov 23 '18 at 2:26
|
show 4 more comments
What is the last statement of her method? What is the last statement of your method? What is the difference?
– camickr
Nov 23 '18 at 2:21
What would her method return if the first string was empty (length 0)? What would yours return?
– David
Nov 23 '18 at 2:21
@David mine wouldn't return anything at all because of the error, while hers would return "these are the same words"
– Patricia Manarazan
Nov 23 '18 at 2:24
1
@PatriciaManarazan: "mine wouldn't return anything at all" - That is the error. The compiler has to ensure that the method will always return the advertised type. There exists a logical condition where your method wouldn't return anything, which is invalid.
– David
Nov 23 '18 at 2:25
@camickr hers: return ("these are the same words") ; mine: return s2;
– Patricia Manarazan
Nov 23 '18 at 2:26
What is the last statement of her method? What is the last statement of your method? What is the difference?
– camickr
Nov 23 '18 at 2:21
What is the last statement of her method? What is the last statement of your method? What is the difference?
– camickr
Nov 23 '18 at 2:21
What would her method return if the first string was empty (length 0)? What would yours return?
– David
Nov 23 '18 at 2:21
What would her method return if the first string was empty (length 0)? What would yours return?
– David
Nov 23 '18 at 2:21
@David mine wouldn't return anything at all because of the error, while hers would return "these are the same words"
– Patricia Manarazan
Nov 23 '18 at 2:24
@David mine wouldn't return anything at all because of the error, while hers would return "these are the same words"
– Patricia Manarazan
Nov 23 '18 at 2:24
1
1
@PatriciaManarazan: "mine wouldn't return anything at all" - That is the error. The compiler has to ensure that the method will always return the advertised type. There exists a logical condition where your method wouldn't return anything, which is invalid.
– David
Nov 23 '18 at 2:25
@PatriciaManarazan: "mine wouldn't return anything at all" - That is the error. The compiler has to ensure that the method will always return the advertised type. There exists a logical condition where your method wouldn't return anything, which is invalid.
– David
Nov 23 '18 at 2:25
@camickr hers: return ("these are the same words") ; mine: return s2;
– Patricia Manarazan
Nov 23 '18 at 2:26
@camickr hers: return ("these are the same words") ; mine: return s2;
– Patricia Manarazan
Nov 23 '18 at 2:26
|
show 4 more comments
1 Answer
1
active
oldest
votes
You seem to be missing the default return of "these are the same words"
. It isn't clear why you both chose to implement this with a loop (or why neither of you chose to use an else
). Regardless, String
is Comparable
so I would simply do
public static String alphaString(String s1, String s2) {
int c = s1.compareTo(s2);
if (c < 0) {
return s1;
} else if (c > 0) {
return s2;
}
return "these are the same words";
}
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
1
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53439919%2fsimilar-code-yet-one-version-does-not-return-a-string-when-it-should%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You seem to be missing the default return of "these are the same words"
. It isn't clear why you both chose to implement this with a loop (or why neither of you chose to use an else
). Regardless, String
is Comparable
so I would simply do
public static String alphaString(String s1, String s2) {
int c = s1.compareTo(s2);
if (c < 0) {
return s1;
} else if (c > 0) {
return s2;
}
return "these are the same words";
}
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
1
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
add a comment |
You seem to be missing the default return of "these are the same words"
. It isn't clear why you both chose to implement this with a loop (or why neither of you chose to use an else
). Regardless, String
is Comparable
so I would simply do
public static String alphaString(String s1, String s2) {
int c = s1.compareTo(s2);
if (c < 0) {
return s1;
} else if (c > 0) {
return s2;
}
return "these are the same words";
}
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
1
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
add a comment |
You seem to be missing the default return of "these are the same words"
. It isn't clear why you both chose to implement this with a loop (or why neither of you chose to use an else
). Regardless, String
is Comparable
so I would simply do
public static String alphaString(String s1, String s2) {
int c = s1.compareTo(s2);
if (c < 0) {
return s1;
} else if (c > 0) {
return s2;
}
return "these are the same words";
}
You seem to be missing the default return of "these are the same words"
. It isn't clear why you both chose to implement this with a loop (or why neither of you chose to use an else
). Regardless, String
is Comparable
so I would simply do
public static String alphaString(String s1, String s2) {
int c = s1.compareTo(s2);
if (c < 0) {
return s1;
} else if (c > 0) {
return s2;
}
return "these are the same words";
}
answered Nov 23 '18 at 2:25
Elliott Frisch
152k1389178
152k1389178
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
1
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
add a comment |
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
1
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
We used a loop because that was the direction our teacher gave us and we have not seen s1.compareTo(s2) formally in class, so we were not allowed.
– Patricia Manarazan
Nov 23 '18 at 2:29
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
When I add : return "these are the same words"; to my original method I can make it compile and It does return a String but I don't understand why. How does that statement affect the rest? why does its absence cause the error?
– Patricia Manarazan
Nov 23 '18 at 2:46
1
1
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
The method advertises that it returns a String, therefore, every possible exit out of the method must return a String. In the case where both of the if conditions evaluate to false, there is not a return statement. Therefore, there is a possible exit out of the method that does not return a String, which is the reason for the compile error.
– John Camerin
Nov 23 '18 at 2:56
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53439919%2fsimilar-code-yet-one-version-does-not-return-a-string-when-it-should%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What is the last statement of her method? What is the last statement of your method? What is the difference?
– camickr
Nov 23 '18 at 2:21
What would her method return if the first string was empty (length 0)? What would yours return?
– David
Nov 23 '18 at 2:21
@David mine wouldn't return anything at all because of the error, while hers would return "these are the same words"
– Patricia Manarazan
Nov 23 '18 at 2:24
1
@PatriciaManarazan: "mine wouldn't return anything at all" - That is the error. The compiler has to ensure that the method will always return the advertised type. There exists a logical condition where your method wouldn't return anything, which is invalid.
– David
Nov 23 '18 at 2:25
@camickr hers: return ("these are the same words") ; mine: return s2;
– Patricia Manarazan
Nov 23 '18 at 2:26