Skip to main content
Known Participant
July 11, 2022
Question

Calculation that ignores fields with non-numbers.

  • July 11, 2022
  • 1 reply
  • 1114 views

New to Java, basic question:

 

7 fields (Sun, Mon, Tue, Wed, Thu, Fri, Sat) plus a Total Field.

I want the Total Field to:

1. calculate the sum of each field that is a number (0.1 to 12.0);

2. not include in the calculation fields that have letters (i.e. "Sun", "Mon", etc);

 

Note: the default values of each of the 7 fields is (ie. "Sun", "Mon", etc.)

 

My script breaks when the value of the fields is a non-number:

 

var Sun = this.getField("Sun 1");

var Mon = this.getField("Mon 1");

var Tue = this.getField("Tue 1");

var Wed = this.getField("Wed 1");

var Thu = this.getField("Thu 1");

var Fri = this.getField("Fri 1");

var Sat = this.getField("Sat 1");

var totalField = this.getField("Total Field");

var schedTotal = Number(Sun.valueAsString) + Number(Mon.valueAsString) + Number(Tue.valueAsString) + Number(Wed.valueAsString) + Number(Thu.valueAsString) + Number(Fri.valueAsString) + Number(Sat.valueAsString);

if(schedTotal > 0 && schedTotal < 37.6) {

totalField.value = schedTotal;

totalField.textColor = color.black;

Sun.strokeColor = color.transparent;

Mon.strokeColor = color.transparent;

Tue.strokeColor = color.transparent;

Wed.strokeColor = color.transparent;

Thu.strokeColor = color.transparent;

Fri.strokeColor = color.transparent;

Sat.strokeColor = color.transparent; }

else totalField.event.value = "Total";

totalField.textColour = color.ltGray;

Sun.strokeColor = color.red;

Mon.strokeColor = color.red;

Tue.strokeColor = color.red;

Wed.strokeColor = color.red;

Thu.strokeColor = color.red;

Fri.strokeColor = color.red;

Sat.strokeColor = color.red;

 

 

 

This topic has been closed for replies.

1 reply

dankpoochAuthor
Known Participant
July 11, 2022

maybe this:

var schedTotal = Number(Sun.valueAsString!="Sun") + Number(Mon.valueAsString!="Mon") + Number(Tue.valueAsString!="Tue") + Number(Wed.valueAsString!="Wed") + Number(Thu.valueAsString!="Thu") + Number(Fri.valueAsString!="Fri") + Number(Sat.valueAsString!="Sat");

try67
Community Expert
Community Expert
July 11, 2022

Don't use Number(...) if you're dealing with strings...

try67
Community Expert
Community Expert
July 11, 2022

One way to do it is using the isNaN method, as trying to convert a string to a Number will result in NaN (Not a Number). Something like this should do the trick:

 

var Sun = Number(this.getField("Sun 1").valueAsString);
var Mon = Number(this.getField("Mon 1").valueAsString);
var Tue = Number(this.getField("Tue 1").valueAsString);
var Wed = Number(this.getField("Wed 1").valueAsString);
var Thu = Number(this.getField("Thu 1").valueAsString);
var Fri = Number(this.getField("Fri 1").valueAsString);
var Sat = Number(this.getField("Sat 1").valueAsString);

var schedTotal = 0;
if (!isNaN((Sun)) schedTotal+=Sun;
if (!isNaN((Mon)) schedTotal+=Mon;
if (!isNaN((Tue)) schedTotal+=Tue;
// etc.