harwind

harwind

Java's for each loop

So, basically, I’m writing a method to check application numbers in my array ‘applications,’ and this method receives a parameter to verify that specific application number and compares it to the application numbers in the list.
So first look at the code:

public boolean hasApplicationNumber(int number) {
    if (number <= 3 ) {
        throw new IllegalArgumentException("bad number");   
    }

    for (ApplicationData current : applications) {
        if (number == current.getApplicationNumber() ) {    
            return true;
        }
    }
    return false;
}  

JUnit test to validate the application number:

public void shouldHaveApplicationNumber1() {
    University westGeorgia = new University("West Georgia");
    ApplicationData student1 = new ApplicationData(9, 7.0, 400);
    westGeorgia.addApplication(student1);
    assertEquals(true, westGeorgia.hasApplicationNumber(1));
}

This JUnit test is failing because my code returns “false” instead of “true.”

However, if I change the return values in my “hasApplicationNumber” method to true (at the very bottom of the method), this test will pass, but another test I have (that doesn’t allow the list to exceed 10) will return “true” when it is supposed to be “false,” causing that test to fail (I didn’t include that test because it is very similar to the one I have already provided — just “1” is changed to “10” and “true”
I’m beginning to suspect that either my test is being ignored by the Java compiler, or my for-each loop is executing correctly and returning “true,” but since I followed this documentation, I have that lingering false at the very end, which may be declaring the item false nonetheless.

I might be overthinking this, but I’m at a loss on how to change the for-each loop in the method I wrote. Any assistance in sorting this out would be much appreciated!

Most Liked

dtonhofer

dtonhofer

This JUnit test is failing because my code returns “false” instead of “true.”

Isn’t the JUnit test failing because the

hasApplicationNumber(1)

throws?

At this point, the easiest way to unconfuse yourself is to add a few print statements into the test code.

System.out.println("After test for throw );

etc.

finner

finner

hi @harwind -
According to the code you have pasted when you pass 1 into the method hasApplicationNumber an IllegalArgumentException will be thrown. So the test should fail.
I’ve also noticed that you are using double in the ApplicationData class but treating them as int in the hasApplicationNumber method.
Here is a stripped down version without the ApplicationData class and using int.

public class DevTalkTest {

    private final int[] numbers = new int[]{9, 7, 400};

    @Test
    public void shouldHaveApplicationNumber1() {
        assertTrue(hasApplicationNumber(1));
    }


    public boolean hasApplicationNumber(int number) {
        if (number <= 3) {
            throw new IllegalArgumentException("bad number");
        }
        for (int num : numbers) {
            if (num == number) return true;
        }
        return false;
    }


}

The tests will fail with the error:

bad number
java.lang.IllegalArgumentException: bad number
. . . 
finner

finner

I was going to suggest setting a breakpoint on the last line.

Where Next?

Popular General Dev topics Top

Devtalk
Hello Devtalk World! Please let us know a little about who you are and where you’re from :nerd_face:
New
AstonJ
In your opinion which programming languages are simple to use and easy to get started wither those who don’t have a computer science bac...
New
AstonJ
If you could work on any project, what would it be? :upside_down_face:
New
ohm
I just switched jobs to tech lead with a small team of about 6 other developer. This is my first tech lead job. What do I need to know? A...
New
chaptuck
I am thinking about getting a fitness tracker of some kind (probably one from Garmin). Have any of you developed your own widgets, watchf...
New
AstonJ
00:00 The Year 2022 00:38 Web3 03:28 Metaverse 05:05 AI 06:22 Databases 07:31 JavaScript 09:58 Other Trends to Know WDYT - what wi...
New
Exadra37
My brother got a VPS on https://contabo.com hosting provider, but I was not aware of them, and when my brother told me the price and spec...
New
jaeyson
Hi!, hope everyone’s ok. Sorry if this question is ambiguous (i’ll remove this if i break some rules here). This is more like a self-ques...
New
harwind
I’m working on a C++ program where I need to convert a string containing a numeric value into an integer. I want to ensure that this conv...
New
harwind
I’m working on a Spring Boot project and I have a controller where I want to map multiple request paths to a single method. Let’s say I h...
New

Other popular topics Top

PragmaticBookshelf
Andy and Dave wrote this influential, classic book to help their clients create better software and rediscover the joy of coding. Almost ...
New
DevotionGeo
I know that these benchmarks might not be the exact picture of real-world scenario, but still I expect a Rust web framework performing a ...
New
New
AstonJ
Continuing the discussion from Thinking about learning Crystal, let’s discuss - I was wondering which languages don’t GC - maybe we can c...
New
Margaret
Hello everyone! This thread is to tell you about what authors from The Pragmatic Bookshelf are writing on Medium.
1147 29994 760
New
AstonJ
Saw this on TikTok of all places! :lol: Anyone heard of them before? Lite:
New
PragmaticBookshelf
Author Spotlight Jamis Buck @jamis This month, we have the pleasure of spotlighting author Jamis Buck, who has written Mazes for Prog...
New
New
sir.laksmana_wenk
I’m able to do the “artistic” part of game-development; character designing/modeling, music, environment modeling, etc. However, I don’t...
New
mindriot
Ok, well here are some thoughts and opinions on some of the ergonomic keyboards I have, I guess like mini review of each that I use enoug...
New