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

wolf4earth
Inspired by this thread about arcade games - which I initially misread as favorite arcade game soundtracks - I wanted to ask about your f...
New
chasekaylee
Just like the title says :smiley: which courses you find that have had the most impact in the span of your career as a developer?
New
AstonJ
Always interested in seeing what apps people use and how they organise their phones/home screens! Here’s mine…
New
DevotionGeo
As the title suggests, this thread will contain some real wisdom came from experience. Please add something meaningful than fancy looking...
New
AstonJ
Do you think it’s worth worrying about? Do you think it’s going to be an even bigger issue in future? If so what can the teams of smaller...
New
AstonJ
Maybe a specific language or framework? Or a book or tool perhaps? What’s made your life easier and what do you think could make the live...
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
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
New

Other popular topics Top

PragmaticBookshelf
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you’ll go beyond the syntax—and...
New
Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
Rainer
My first contact with Erlang was about 2 years ago when I used RabbitMQ, which is written in Erlang, for my job. This made me curious and...
New
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
New
PragmaticBookshelf
Rails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single...
New
AstonJ
If you get Can't find emacs in your PATH when trying to install Doom Emacs on your Mac you… just… need to install Emacs first! :lol: bre...
New
AstonJ
Was just curious to see if any were around, found this one: I got 51/100: Not sure if it was meant to buy I am sure at times the b...
New
New
NewsBot
Node.js v22.14.0 has been released. Link: Release 2025-02-11, Version 22.14.0 'Jod' (LTS), @aduh95 · nodejs/node · GitHub
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