• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 04:10
CEST 10:10
KST 17:10
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL22] Ro8 Preview: In A Tizzy9[ASL22] Ro16 Preview: Holy Diver5[ASL22] Ro16 Preview: Rough Waters10[ASL22] Ro24 Preview: Siren's Call8[ASL22] Ro24 Preview: Summer's End9
Community News
Weekly Cups (Sep 13-20): herO scores triple1BSL Season 235Weekly Cups (Sep 7-12): SHIN, ByuN, MaxPax double down1StarCraft open world shooter announced at BlizzCon101Weekly Cups (Aug 30-Sep 7): herO thrives amid growing schism10
StarCraft 2
General
Balance hotfix patch 5.0.16b (July 16) Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool How do you feel about the StarCraft shooter announcement at BlizzCon 2026? The Death of Cheese: From a Professional Cheeser Weekly Cups (Sep 13-20): herO scores triple
Tourneys
Stellar Fest TWO the Moon (Dec 16-20) Sparkling Tuna Cup - Weekly Open Tournament 2026 GSTL Announcement RSL Revival: Season 6 - Qualifiers and Main Event RSL goes to London! 2026 Offline Finals Nov 21-22
Strategy
[H] ZvP Mid-Late Game: Stalkers Collossi HT
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
Mutation # 544 Double Trouble The PondCast: SC2 News & Results Mutation # 543 Enhanced Defenses Mutation # 542 The Ascended
Brood War
General
screpdb: new Starcraft reporting tool an AI researcher's take on the ladder bot BW General Discussion Bot on ladder [ASL22] Ro8 Preview: In A Tizzy
Tourneys
[ASL22] Ro8 Day 2 [ASL22] Ro16 Group D [ASL22] Ro8 Day 1 [IPSL] IPSL is Back With Winter 26-27!
Strategy
Cliff Jump Revisited (1 in a 1000 strategy) Replay Review Process - What do you do? Simple Questions, Simple Answers Odyssey Mineral Stack Saturation
Other Games
General Games
Diablo IV Nintendo Switch Thread Warcraft III: The Frozen Throne Stormgate/Frost Giant Megathread EVE Corporation
Dota 2
Dota 2 Champions League Season 3 Begins April 25! Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread Artificial Intelligence Thread Things Aren’t Peaceful in Palestine All you football fans (soccer)!
Fan Clubs
MarineLorD Fan Club The Creator Fan Club The ShoWTimE Fan Club
Media & Entertainment
Movie Discussion! [Manga] One Piece Diablo Animated Series on Netflix
Sports
Football (Soccer) Thread TeamLiquid Health and Fitness Initiative For 2023 MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Recent Gifted Posts
Blogs
Gaming Intensity, Problemati…
TrAiDoS
38 yo Retired SWE loo…
PurE)Rabbit-SF
Can Bots Beat Pros?? Starcr…
namkraft
[meme] I finally understa…
LUCKY_NOOB
Regacy Esports:Our Goa…
regacyesports
Dreaming of BW patches (mod…
c3rberUs
Customize Sidebar...

Website Feedback

Closed Threads



Active: 10856 users

The Big Programming Thread - Page 269

Forum Index > General Forum
Post a Reply
Prev 1 267 268 269 270 271 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
FFGenerations
Profile Blog Joined April 2011
7088 Posts
Last Edited: 2013-03-14 14:25:56
March 14 2013 14:25 GMT
#5361
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks
Cool BW Music Vid - youtube.com/watch?v=W54nlqJ-Nx8 ~~~~~ ᕤ OYSTERS ᕤ CLAMS ᕤ AND ᕤ CUCKOLDS ᕤ ~~~~~~ ༼ ᕤ◕◡◕ ༽ᕤ PUNCH HIM ༼ ᕤ◕◡◕ ༽ᕤ
Yoshi-
Profile Joined October 2008
Germany10227 Posts
March 14 2013 14:26 GMT
#5362
if(grade="")

That is not a comparison, it just sets the variable grade to an empty content.
FFGenerations
Profile Blog Joined April 2011
7088 Posts
March 14 2013 14:41 GMT
#5363
Okay thanks, silly error
Cool BW Music Vid - youtube.com/watch?v=W54nlqJ-Nx8 ~~~~~ ᕤ OYSTERS ᕤ CLAMS ᕤ AND ᕤ CUCKOLDS ᕤ ~~~~~~ ༼ ᕤ◕◡◕ ༽ᕤ PUNCH HIM ༼ ᕤ◕◡◕ ༽ᕤ
AmericanUmlaut
Profile Blog Joined November 2010
Germany2597 Posts
Last Edited: 2013-03-14 15:14:07
March 14 2013 15:13 GMT
#5364
On March 14 2013 23:41 FFGenerations wrote:
Okay thanks, silly error

I recommend Yoda notation. Lots of people don't like it, but you can seriously get used to reading it quite quickly, and it makes errors like that impossible:

if("" = grade){
...
}


If you made the same mistake, but always put the constant you're comparing to on the left side of the operator, you'll get an exception instead of the unexpected behavior you were getting, because you can't assign a new value to ""
The frumious Bandersnatch
AmericanUmlaut
Profile Blog Joined November 2010
Germany2597 Posts
Last Edited: 2013-03-14 15:20:09
March 14 2013 15:19 GMT
#5365
On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks

This isn't an answer to your actual question, but I'd like to suggest an improvement in your program:


if("" == grade)
{
alert("You need to enter a grade")
}
else if(grade > -1 && grade < 40)
{
alert("This is below threshold.")
}
else if(grade<50)
{
alert("This is a third class degree.")
}
else if(grade<60)
{
alert("This is a lower second degree.")
}
else if(grade<70)
{
alert("This is an upper second degree.")
}
else if(grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


Your checks like "grade>39" are redundant, because they come after you have already determined that grade is not less than 40 (otherwise you would have run into the previous if).
The frumious Bandersnatch
Frigo
Profile Joined August 2009
Hungary1023 Posts
March 14 2013 15:33 GMT
#5366
On March 14 2013 03:48 ragz_gt wrote:
Show nested quote +
On March 13 2013 20:08 Frigo wrote:
On March 13 2013 07:00 Frigo wrote:
On March 13 2013 02:21 ragz_gt wrote:
Does anyone know if there is a JUnit contrib that allow customizable test execution order?

I remember such a feature in a newer JUnit release. It can at least randomize orders I believe, not sure about a user-defined order though.
Can tell you more details tomorrow when I have access to work mail.


http://www.hascode.com/2012/11/new-features-in-junit-4-11/

Yeah, it is possible.


It is rather limited that it can only sort by method name (and ascend only, can't descend LOL). But I guess I can name stuff by levels (1000s, 2000s etc) and should work

Kind of silly though

Yeah, they implemented it in a very stupid way, can't even extend it.
http://www.fimfiction.net/user/Treasure_Chest
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-03-14 17:45:08
March 14 2013 17:32 GMT
#5367
On March 15 2013 00:19 AmericanUmlaut wrote:
Show nested quote +
On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks

This isn't an answer to your actual question, but I'd like to suggest an improvement in your program:
+ Show Spoiler +


if("" == grade)
{
alert("You need to enter a grade")
}
else if(grade > -1 && grade < 40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade<60)
{
alert("This is a lower second degree.")
}
else if(grade<70)
{
alert("This is an upper second degree.")
}
else if(grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


Your checks like "grade>39" are redundant, because they come after you have already determined that grade is not less than 40 (otherwise you would have run into the previous if).


Isn't it better if the code is only:

+ Show Spoiler +

if(grade>=40&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade >= 50 && grade<60)
{
alert("This is a lower second degree.")
}
else if(grade >= 60 && grade<70)
{
alert("This is an upper second degree.")
}
else if(grade >= 70 && grade<=100)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


It looks a bit more clear with <= 100, and you also skip the -1 & 40 check and the one for empty grade. They are covered in the last else.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-03-14 18:04:25
March 14 2013 18:02 GMT
#5368
On March 15 2013 02:32 darkness wrote:
Show nested quote +
On March 15 2013 00:19 AmericanUmlaut wrote:
On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks

This isn't an answer to your actual question, but I'd like to suggest an improvement in your program:
+ Show Spoiler +


if("" == grade)
{
alert("You need to enter a grade")
}
else if(grade > -1 && grade < 40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade<60)
{
alert("This is a lower second degree.")
}
else if(grade<70)
{
alert("This is an upper second degree.")
}
else if(grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


Your checks like "grade>39" are redundant, because they come after you have already determined that grade is not less than 40 (otherwise you would have run into the previous if).


Isn't it better if the code is only:

+ Show Spoiler +

if(grade>=40&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade >= 50 && grade<60)
{
alert("This is a lower second degree.")
}
else if(grade >= 60 && grade<70)
{
alert("This is an upper second degree.")
}
else if(grade >= 70 && grade<=100)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


It looks a bit more clear with <= 100, and you also skip the -1 & 40 check and the one for empty grade. They are covered in the last else.


I actually prefer data based code for those situations. My javascript is rusty so the syntax might not be 100% correct or optimal:


var boundaries = new Array(
new Array(39, function(){}),
new Array(49, function(){alert("This is a third class degree.")}),
new Array(59, function(){alert("This is a lower second class degree.")}),
new Array(69, function(){alert("This is a upper second class degree.")}),
new Array(100, function(){alert("This is a first class degree.")})
);

// foreach would be better but don't remember if it was native JS
for (i = 0; i < boundaries.length; ++i)
{
if (grade <= boundaries[i][0])
{
boundaries[i][1]();
break;
}
}
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-03-14 18:21:53
March 14 2013 18:19 GMT
#5369
^ what's the value of boundaries.length? 100 or number of arrays (5 in this case)? If the former, then I'm not sure if this would be any faster/better because of numerous iterations and you also use memory to create arrays.

Edit: It should be the former like other languages, but I'm not familiar with JavaScript anyway.
alwinuz
Profile Joined September 2011
Netherlands77 Posts
March 14 2013 18:53 GMT
#5370
I don't think speed matters, it's more a question of what is more readable and maintainable code.
Write easy code first, optimize for speed later (and measure first!).
But is this more readable than the original code? Not sure... personal preference I think.
RoyGBiv_13
Profile Blog Joined August 2010
United States1275 Posts
March 14 2013 19:17 GMT
#5371
On March 15 2013 03:53 alwinuz wrote:
I don't think speed matters, it's more a question of what is more readable and maintainable code.
Write easy code first, optimize for speed later (and measure first!).
But is this more readable than the original code? Not sure... personal preference I think.


I don't really want to start a big huff over nothing, but there is a misconception I don't want spread. The idea that an easily maintainable design is a trade off with with code speed is absurd. The better the design, the smaller the code base, more maintainable, readable, and faster it will be. If you find that your code is running slow, then optimizing it will only cause problems in your understanding of the code. This is often why people rewrite programs from scratch, because they tried to optimize something, realized they did the design wrong, and start over.

Optimization should be done out the gate, so that your design pattern will reflect the quickest way to solve the problem, and be easier to understand because of it.

Any sufficiently advanced technology is indistinguishable from magic
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
March 14 2013 19:23 GMT
#5372
On March 15 2013 04:17 RoyGBiv_13 wrote:
Show nested quote +
On March 15 2013 03:53 alwinuz wrote:
I don't think speed matters, it's more a question of what is more readable and maintainable code.
Write easy code first, optimize for speed later (and measure first!).
But is this more readable than the original code? Not sure... personal preference I think.


I don't really want to start a big huff over nothing, but there is a misconception I don't want spread. The idea that an easily maintainable design is a trade off with with code speed is absurd. The better the design, the smaller the code base, more maintainable, readable, and faster it will be. If you find that your code is running slow, then optimizing it will only cause problems in your understanding of the code. This is often why people rewrite programs from scratch, because they tried to optimize something, realized they did the design wrong, and start over.

Optimization should be done out the gate, so that your design pattern will reflect the quickest way to solve the problem, and be easier to understand because of it.


Depends on what kind of optimization you're talking about. You're basically talking about having a good model of the program before you make it, which indeed benefits both maintainability and speed, but I don't think most people would call that optimization, that's more along the lines of "either you know what you're doing before you go in, or you fuck it up and rewrite it, learning something in the process". It's not like you write a program, are really proud of it, test the speed and rewrite it from scratch because a completely different design would be faster.

So I would say the idea "make it first, then optimize where needed" makes sense because the optimization you're talking about isn't something you can do ahead of time since you don't know what it is, you already designed the program wrong from the start if you need to do it.
FFGenerations
Profile Blog Joined April 2011
7088 Posts
March 14 2013 19:50 GMT
#5373
well you could just put more thought into what you're doing; my example was just a super fast messing around thing to get something working in javascript, however if i thought for 10 seconds i could have written it better like demonstrated, or even better yet
Cool BW Music Vid - youtube.com/watch?v=W54nlqJ-Nx8 ~~~~~ ᕤ OYSTERS ᕤ CLAMS ᕤ AND ᕤ CUCKOLDS ᕤ ~~~~~~ ༼ ᕤ◕◡◕ ༽ᕤ PUNCH HIM ༼ ᕤ◕◡◕ ༽ᕤ
AmericanUmlaut
Profile Blog Joined November 2010
Germany2597 Posts
March 14 2013 21:09 GMT
#5374
On March 15 2013 02:32 darkness wrote:
Show nested quote +
On March 15 2013 00:19 AmericanUmlaut wrote:
On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks

This isn't an answer to your actual question, but I'd like to suggest an improvement in your program:
+ Show Spoiler +


if("" == grade)
{
alert("You need to enter a grade")
}
else if(grade > -1 && grade < 40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade<60)
{
alert("This is a lower second degree.")
}
else if(grade<70)
{
alert("This is an upper second degree.")
}
else if(grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


Your checks like "grade>39" are redundant, because they come after you have already determined that grade is not less than 40 (otherwise you would have run into the previous if).


Isn't it better if the code is only:

+ Show Spoiler +

if(grade>=40&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade >= 50 && grade<60)
{
alert("This is a lower second degree.")
}
else if(grade >= 60 && grade<70)
{
alert("This is an upper second degree.")
}
else if(grade >= 70 && grade<=100)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}


It looks a bit more clear with <= 100, and you also skip the -1 & 40 check and the one for empty grade. They are covered in the last else.

You changed his logic - the original function generated a different message for values 0-40 than for values outside the range 0-100. If I enter "30" into your function, I get "Please enter a grade from 0 to 100", that's silly.
The frumious Bandersnatch
misirlou
Profile Joined June 2010
Portugal3316 Posts
March 14 2013 21:23 GMT
#5375
On March 15 2013 03:19 darkness wrote:
^ what's the value of boundaries.length? 100 or number of arrays (5 in this case)? If the former, then I'm not sure if this would be any faster/better because of numerous iterations and you also use memory to create arrays.

Edit: It should be the former like other languages, but I'm not familiar with JavaScript anyway.


The later, like EVERY other language. Boundaries is an array with 5 elements (which are other arrays of 2 elements each but they could be ints objects or arrays of arrays, thats not relevant), so the length of boundaries is 5.
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2013-03-14 21:42:45
March 14 2013 21:34 GMT
#5376
On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks



Your code seems to be able to compare integers and strings without regard for the data type.

I think after you've validated the grade is a number, you have to apply a parseInt(grade), then you can perform all these if..else checks. That's what I think I did when I did JS some years ago.

I think it parses your string grade into ASCII, which is causing your unexpected behavior.
There is no one like you in the universe.
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
March 14 2013 21:37 GMT
#5377
On March 15 2013 06:34 Blisse wrote:

Show nested quote +
On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks



Your code seems to be able to compare integers and strings without regard for the data type.

I think you have to apply a parseInt(grade) after you've validated the grade is a number, before you can perform all these checks. That's what I think I did when I did JS some years ago.

There's no problem comparing strings and numbers in javascript. Try something like:
alert("20" > 5) and you'll get true.
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2013-03-14 22:42:13
March 14 2013 21:44 GMT
#5378
On March 15 2013 06:37 Tobberoth wrote:
Show nested quote +
On March 15 2013 06:34 Blisse wrote:

On March 14 2013 23:25 FFGenerations wrote:
Using javascript & html, i have a button on a page and a text box. User inputs a grade number into the text box and presses the button. An alert pops up based on the input, using a simple if statement, telling the user if the entered grade is a merit, pass etc.

+ Show Spoiler +

if(grade!="")
{
if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}
else
{
alert("Please enter a grade from 0 to 100.")
}
}


The question is, why do i need to lay out everything within a second if statement?
The first time i wrote it, i had similar to the following:

+ Show Spoiler +


if(grade="")
{
alert("You need to enter a grade")
}
else if(grade>-1&&grade<40)
{
alert("This is below threshold.")
}
else if(grade>39&&grade<50)
{
alert("This is a third class degree.")
}
else if(grade>49&&grade<60)
{
alert("This is a lower second degree.")
}
else if(grade>59&&grade<70)
{
alert("This is an upper second degree.")
}
else if(grade>69&&grade<101)
{
alert("This is a first class degree.")
}
else
{
alert("Please enter a grade from 0 to 100.")
}



however, this kept displaying "This is below threshold." instead of running the if(grade="") part.
My tutor said it might be something to do with the if statements switching from string ("") to int (grade>-1&&grade<40) which is somehow messing it up.

Many thanks



Your code seems to be able to compare integers and strings without regard for the data type.

I think you have to apply a parseInt(grade) after you've validated the grade is a number, before you can perform all these checks. That's what I think I did when I did JS some years ago.

There's no problem comparing strings and numbers in javascript. Try something like:
alert("20" > 5) and you'll get true.


Because "20" as an ASCII value should be greater than 5, at least it would make sense if it were.

"4" > 5 doesn't seem like it would return true, but it probably does here. Again, not a JS person.

And anyways, I don't believe you're suggesting one should compare strings with integers like that. Best practice should always be string with string and int with int.
There is no one like you in the universe.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
March 14 2013 21:49 GMT
#5379
On March 15 2013 03:53 alwinuz wrote:
I don't think speed matters, it's more a question of what is more readable and maintainable code.
Write easy code first, optimize for speed later (and measure first!).
But is this more readable than the original code? Not sure... personal preference I think.


I think it's definitely more readable and maintainable.

There is just one place you have to look at to know where every level begins and ends, you don't have to go through each "else if" to find all the values. If you need to adjust it you instantly know where you have to do it, no need to search through potentially dozens of cases. If you have to add a case, no need to search through all branches to know where it belongs, you can see it in the short list.

Sure, in this case it's a small amount of branches but i had a similar situation with price groups where certain video lengths resulted in different prices and there were twice as many potential values and the previous "if/else if" stuff was far too long. After i changed it to something similar to my code above (in PHP), it was so easy that i was able to copy-paste the list into an email to the product manager and he understood it easily.

I could probably also have written it like this, which is easier to the untrained eye:

var boundaries = new Array();
boundaries["39"] = "";
boundaries["49"] = "third level";
...
Orome
Profile Blog Joined June 2004
Switzerland11984 Posts
March 15 2013 02:18 GMT
#5380
Hey guys, small C++ question that I hope someone can help me with. Assuming we have a std::stack called someStack consisting of SomeClass objects, why does this sort of code work fine?

SomeClass *next = someStack.top();
stack.pop();
next.printWhatever();


Since next is a pointer variable pointing to someStack.top(), shouldn't it point to a null object once that object is destroyed through pop?
On a purely personal note, I'd like to show Yellow the beauty of infinitely repeating Starcraft 2 bunkers. -Boxer
Prev 1 267 268 269 270 271 1032 Next
Please log in or register to reply.
Live Events Refresh
Next event in 2h 50m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
ProTech142
Has 49
StarCraft: Brood War
Britney 2070
Shuttle 1625
Leta 280
Stork 162
Dewaltoss 141
firebathero 128
PianO 78
ggaemo 52
Bale 28
Terrorterran 6
Dota 2
Gorgc1325
League of Legends
JimRising 589
Counter-Strike
ceh9506
Other Games
olofmeister327
Happy318
Livibee146
Maynarde135
crisheroes133
Mew2King98
Organizations
Dota 2
PGL Dota 2 - Main Stream6245
Other Games
gamesdonequick494
StarCraft: Brood War
Afreeca ASL 384
[ Show 15 non-featured ]
StarCraft 2
• Berry_CruncH114
• mYiSmile130
• LUISG 18
• StrangeGG 16
• Letter146
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota2127
League of Legends
• Stunt653
Upcoming Events
Kung Fu Cup
2h 50m
The PondCast
1d 1h
Replay Cast
1d 15h
Korean StarCraft League
2 days
CranKy Ducklings
3 days
GSL
3 days
Yamato Cup
4 days
Replay Cast
4 days
Afreeca Starleague
5 days
WardiTV Weekly
5 days
[ Show More ]
Sparkling Tuna Cup
6 days
Afreeca Starleague
6 days
PiGosaur Cup
6 days
Liquipedia Results

Completed

Super Anchor Qualifying S3
Blizzard Classic Cup 2026
Big Dog Cup 2026 Div 1

Ongoing

ASL Season 22
CSL 2026 AUTUMN (S22)
Acropolis #5
Acropolis #5 - GSA
Calamity Invitational
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026

Upcoming

Acropolis #5 - GSB
Acropolis #5 - GSC
BSL Season 23
SC4ALL II: Brood War
BSL 23: Non-Korean Championship
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
Custodian Cup
Copium Cup
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.