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

AstonJ
If you’re a fan, why? If you’re not fussed on it, how comes?
New
chasekaylee
I’ve been using the classic notebook to-do list, but I’m curious to hear what awesome tools are out there that I am not aware of. I’m alw...
New
Exadra37
Have you ever wanted to build something but you had no idea what to do? Just as authors sometimes have “writers block” it’s also true for...
New
New
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
New
DevotionGeo
The Odin programming language is designed with the intent of creating an alternative to C with the following goals: simplicity high per...
New
DevotionGeo
The V Programming Language Simple language for building maintainable programs V is already mentioned couple of times in the forum, but I...
New
AstonJ
I’ve been watching Prag Dave’s Elixir course and I noticed he uses tree: Tree is a recursive directory listing program that produces a ...
New
DevotionGeo
Hi everyone! I bought this domain name when I was planning to create a website like ElixirSchool.com, but that didn’t ever happen. Now ...
New
DevotionGeo
I am planning to refresh my Ruby knowledge in a month or two, after using other technologies more frequently for a few years. Luckily I w...
New

Other popular topics Top

Devtalk
Reading something? Working on something? Planning something? Changing jobs even!? If you’re up for sharing, please let us know what you’...
1050 21151 394
New
wolf4earth
@AstonJ prompted me to open this topic after I mentioned in the lockdown thread how I started to do a lot more for my fitness. https://f...
New
AstonJ
We have a thread about the keyboards we have, but what about nice keyboards we come across that we want? If you have seen any that look n...
New
AstonJ
Just done a fresh install of macOS Big Sur and on installing Erlang I am getting: asdf install erlang 23.1.2 Configure failed. checking ...
New
Maartz
Hi folks, I don’t know if I saw this here but, here’s a new programming language, called Roc Reminds me a bit of Elm and thus Haskell. ...
New
foxtrottwist
A few weeks ago I started using Warp a terminal written in rust. Though in it’s current state of development there are a few caveats (tab...
New
mafinar
This is going to be a long an frequently posted thread. While talking to a friend of mine who has taken data structure and algorithm cou...
New
AstonJ
We’ve talked about his book briefly here but it is quickly becoming obsolete - so he’s decided to create a series of 7 podcasts, the firs...
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New
PragmaticBookshelf
A concise guide to MySQL 9 database administration, covering fundamental concepts, techniques, and best practices. Neil Smyth MySQL...
New