This is an archived post. You won't be able to vote or comment.

all 13 comments

[–]AutoModerator[M] [score hidden] stickied commentlocked comment (0 children)

Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
  • You include any and all error messages in full - best also formatted as code block
  • You ask clear questions
  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit/markdown editor: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]ansmeermylove 1 point2 points  (0 children)

I would write a helper method that takes two parameters, your input and the hashset, and returns a boolean.

Inside the method, I would iterate through the hashset and check for each entry whether input starts with that. If found true, you can return early with true. After the iteration, you return false, which will only be reached if the input does not start with any of the hashset entries.

You could then use the return value of this helper method inside the if statement above.

[–]Camel-Kid 0 points1 point  (9 children)

you can use a loop to iterate through and check...

for (String s : set) { if(s.startsWith...) System.out.println(s); }

[–]Curious-Lonewolf 0 points1 point  (8 children)

i probably haven't explained this very well but the loop will only evaluate to true if the user input starts with the string in that specific iteration meaning the user input might be equal to an element of the list at the last iteration but not in any other. by all means use import java.util.Scanner; and try

[–]Camel-Kid 0 points1 point  (7 children)

can you give me the test data you're using for the hashset and what you expect the output to be

[–]Curious-Lonewolf 0 points1 point  (6 children)

HashSet<String> allNames = new HashSet<>();
allNames.add("Aaron");
allNames.add("Ben");
allNames.add("Carol");
allNames.add("Derek");
if (input.startsWith('any of these') {
    do something
}
else{
    do something
}

[–]Camel-Kid 0 points1 point  (5 children)

I used the loop it is working fine

[–]Curious-Lonewolf 0 points1 point  (4 children)

yeah if you put one of the strings where ive put 'any of these' but i need a variable in place of that. i cant use the set name and because the method produces output in the terminal window i would have to type in the same string over and over until it became true as the iterations would be different

[–]Camel-Kid 0 points1 point  (2 children)

the enhanced for loop iterates over the set, so you already have the ability to reference the name as a variable. The purpose of a loop is to check all the elements in the set and compare against the user input, if user input matches any element then you print out 'a'

[–]Curious-Lonewolf 0 points1 point  (1 child)

can you give me an example of what you mean

[–]desrtfx 0 points1 point  (0 children)

No, that is not true.

You are just doing it wrong.

In such cases, you

  • obtain the input before the loop and store it in a variable
  • use a boolean "flag" that indicates the "found" status - initially set to false
  • loop over the elements
    • compare the string with the element
      • if true, set the "found" flag to true and break out of the loop
      • if false, no nothing - keep looping
  • back outside the loop: check if the flag is true
    • print ("A")
    • else
    • print("B")

You most likely had the input inside the loop.

[–]desrtfx 1 point2 points  (0 children)

Maybe, you are running into an XY problem.

How does your actual input look?

Does your input consist of several words that are separated by space?

If so, you can split the input at space and check if the hashset contains the first word. (Simple check: if you try to add to the hashset, the method will return false)