• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 02:25
CET 08:25
KST 16:25
  • 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
Rongyi Cup S3 - RO16 Preview3herO wins SC2 All-Star Invitational12SC2 All-Star Invitational: Tournament Preview5RSL Revival - 2025 Season Finals Preview8RSL Season 3 - Playoffs Preview0
Community News
Weekly Cups (Jan 12-18): herO, MaxPax, Solar win0BSL Season 2025 - Full Overview and Conclusion8Weekly Cups (Jan 5-11): Clem wins big offline, Trigger upsets4$21,000 Rongyi Cup Season 3 announced (Jan 22-Feb 7)22Weekly Cups (Dec 29-Jan 4): Protoss rolls, 2v2 returns7
StarCraft 2
General
PhD study /w SC2 - help with a survey! herO wins SC2 All-Star Invitational Oliveira Would Have Returned If EWC Continued StarCraft 2 not at the Esports World Cup 2026 [Short Story] The Last GSL
Tourneys
$21,000 Rongyi Cup Season 3 announced (Jan 22-Feb 7) OSC Season 13 World Championship $70 Prize Pool Ladder Legends Academy Weekly Open! SC2 All-Star Invitational: Jan 17-18 Sparkling Tuna Cup - Weekly Open Tournament
Strategy
Simple Questions Simple Answers
Custom Maps
[A] Starcraft Sound Mod
External Content
Mutation # 509 Doomsday Report Mutation # 508 Violent Night Mutation # 507 Well Trained Mutation # 506 Warp Zone
Brood War
General
Fantasy's Q&A video [ASL21] Potential Map Candidates BGH Auto Balance -> http://bghmmr.eu/ BW General Discussion Gypsy to Korea
Tourneys
[Megathread] Daily Proleagues Azhi's Colosseum - Season 2 Small VOD Thread 2.0 [BSL21] Non-Korean Championship - Starts Jan 10
Strategy
Current Meta Simple Questions, Simple Answers Soma's 9 hatch build from ASL Game 2 Game Theory for Starcraft
Other Games
General Games
Nintendo Switch Thread Battle Aces/David Kim RTS Megathread Stormgate/Frost Giant Megathread Beyond All Reason Awesome Games Done Quick 2026!
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread European Politico-economics QA Mega-thread Canadian Politics Mega-thread NASA and the Private Sector
Fan Clubs
The herO Fan Club! The IdrA Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece
Sports
2024 - 2026 Football Thread
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
How Esports Advertising Shap…
TrAiDoS
My 2025 Magic: The Gathering…
DARKING
Life Update and thoughts.
FuDDx
How do archons sleep?
8882
James Bond movies ranking - pa…
Topin
Customize Sidebar...

Website Feedback

Closed Threads



Active: 2752 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
Germany2590 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
Germany2590 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
Germany2590 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
Portugal3242 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
Replay Cast
00:00
Rongyi Cup S3 - Group B
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RuFF_SC2 231
Nina 197
StarCraft: Brood War
Larva 152
Zeus 137
Shuttle 57
NotJumperer 21
Noble 14
Dota 2
monkeys_forever399
febbydoto107
League of Legends
JimRising 810
C9.Mang0466
Super Smash Bros
Mew2King89
Other Games
summit1g6672
gofns2639
WinterStarcraft535
Organizations
Other Games
gamesdonequick1229
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 10 non-featured ]
StarCraft 2
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Upcoming Events
Replay Cast
1h 35m
RongYI Cup
3h 35m
Maru vs Cyan
Solar vs Krystianer
uThermal 2v2 Circuit
4h 35m
BSL 21
7h 35m
Replay Cast
16h 35m
Wardi Open
1d 6h
Monday Night Weeklies
1d 9h
OSC
1d 16h
Replay Cast
2 days
WardiTV Invitational
2 days
[ Show More ]
Replay Cast
3 days
WardiTV Invitational
3 days
The PondCast
4 days
Korean StarCraft League
5 days
Replay Cast
6 days
Liquipedia Results

Completed

Escore Tournament S1: W5
OSC Championship Season 13
Tektek Cup #1

Ongoing

C-Race Season 1
BSL 21 Non-Korean Championship
CSL 2025 WINTER (S19)
KCM Race Survival 2026 Season 1
Acropolis #4 - TS4
Rongyi Cup S3
Underdog Cup #3
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025

Upcoming

Escore Tournament S1: W6
Escore Tournament S1: W7
Acropolis #4
IPSL Spring 2026
uThermal 2v2 2026 Main Event
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Nations Cup 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League Season 23
ESL Pro League Season 23
PGL Cluj-Napoca 2026
IEM Kraków 2026
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.