# I am looping and  through an array comparing two bigdecimals:

I am looping and through an array comparing two bigdecimals:
I get the max for valueB only if I have multiple items. not when I have one item why would that be:
val=0;
if (array.compareTo(valueB) > 0) {

Hi. You were wise to trace the value of n. Your problem seems
to be that the tests succeed (almost always) in the very first
iteration because they truly don't match (where n = 0) and
execution breaks out. You need to adjust the logic. As one
approach, while sticking with your code and not changing it too
much (such as using more efficient int vs Number):
at the very top, define a counter var ct:int = 0;
before the testing loop, define a flag, such as var
flag:boolean = false;
you could then invert the logic in the loop and test for ==
rather than for !=
if you find a match, do--> flag = true;
and break
at the end of testing, use the flag to decide whether to
store the new value
if (!flag) {
// add to array
ct++;
also, use a while loop for controlling the whole thing-->
while(ct < max) { }
to know when you're done
You can also check out the Array functions indexOf() and
some(), to make things more efficient and faster/easier
when you're all done, you can also look into using if (a != b
&& c != d)
for efficiency, instead of nesting them separately
good luck :)

### Similar Messages

• Help with a FOR loop and an object array

I need to make a for loop that takes an array of objects that contain the parameters year, type, and model (all ints) and sort by year, then divide the array in all the objects with the same year and sort them by type, then divide the array again into the objects with the same year AND type and sort them by model.
the object a Dress objects, the get methods are get+nameof parameter.
the array is a 1D array called Dresses.
I have made a paralell array to store the value of the parameters and sort that then move the array acording to that sorted array. The problem is in the division of the array.

We'll give your request to do (or finish) your homework for you the attention it deserves.

• Looping and storing into arrays

Anyone managed this yet, or BC team - you got any thoughts....?
There could be cases and situations like this one and in this case either a solution or just having a loop array filter would be nice also...
Issue:
You have a web app with classifications. You want to people in a company. You want to show board members (Classification) in one section and the rest of the team in another.
The Rest of the team will show the board members because you do not have classifications in list view.
Solution 1:
BC to provide classifications in list view liquid/collection
Solution 2: (And something we probably may need too)
It would be great to loop through a collection and store into an array
{% assign myarray = [] -%}
{module_webapp collection="myitems"}
{% for item in myitems-%}
{% myarray | map: item.name-%}
{% endfor -%}
{{myarray}}
It would be handy to be able to store items in an array. You can already map an array, have a manually made array you can loop through, have a string you map into an array via a cookie etc.

Well Rob, you have {module_data... So if you want to go even further You can turn to that and you can defiantly do the where. I think bringing that to all modules would be some serious overkill work, you would be basically replicating that functionality.
That is how I am classing _data - This is your hardcore module to use when you want to do some serious s*** but as I have said in other threads, We should not be turning to that all the time when we just need something like categories in list view. That would also be over kill in those situations.
But then when you do use _data it would be good to get some results, map it to an array and then use that for something else.

• Using a For loop to call one array element at a time

I have been working on a VI that reads a GPS unit, parses the data, outputs what I need, compares the actual GPS location to the desired location, determines a desired heading and moves on from there.  My question pertains to the number of desired locations I can input right now.  I need to be able to input a predtermined number of locations (not just the one that I can input right now).  I was told that it is possible to use a For Loop with an array and have the first set of Lat and Long values run through the VI and when everything is complete that the next set of values will be chosen.  Does this mean that I need to put the entire VI inside a For Loop and have the array update as soon as the VI has completed its first mission?  I understand the concept of how this work from other programming languages but I'm not sure how to implement the solution in LabVIEW.  Any help would be appreciated.

Here is a portion of the VI.  I need two separate arrays, one for Latitude and one for Longitude, of the same size.
I don't see any arrays in your code. Do you want to generate arrays form individual data points or do you want to process arrays, one element at a time? Both can take advantage of autoindexing. Here's a simple picture.
Your VI contains a weird mix of DBL and EXT precision. Most likely all you need is DBL. Keep your representations consistent!
Message Edited by altenbach on 08-02-2007 07:14 AM
LabVIEW Champion . Do more with less code and in less time .
Attachments:
Indexing.png ‏4 KB

• Compare two cells in a ALV

Hi!!
I'm doing an ALV, and I need to compare two cells. Only one of them could be inform.
I used this code:
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
ENDCLASS.                    "lcl_event_handler DEFINITION
CLASS lcl_event_handler IMPLEMENTATION
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_data_changed
METHOD handle_data_changed.
PERFORM handle_data_changed USING er_data_changed.
ENDMETHOD.                    "handle_data_changed
ENDCLASS.                    "lcl_event_handler IMPLEMENTATION
*&      Form  HANDLE_DATA_CHANGED
text
-->P_ER_DATA_CHANGED  text
FORM handle_data_changed  USING    ir_data_changed
TYPE REF TO
cl_alv_changed_data_protocol.
DATA: ls_mod_cell TYPE lvc_s_modi,
lv_value    TYPE lvc_value,
lv_value1   TYPE lvc_value.
SORT ir_data_changed->mt_mod_cells." BY row_id.
LOOP AT ir_data_changed->mt_mod_cells
INTO ls_mod_cell
WHERE fieldname = 'CELL2'.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING
i_row_id    = ls_mod_cell-row_id
i_fieldname = 'CELL2'
IMPORTING
e_value     = lv_value1.
ENDLOOP.
LOOP AT ir_data_changed->mt_mod_cells
INTO ls_mod_cell
WHERE fieldname = 'CELL1'.
IF it_prueba-clase IS INITIAL.
CALL METHOD ir_data_changed->modify_cell
EXPORTING
i_row_id    = ls_mod_cell-row_id
i_fieldname = ls_mod_cell-fieldname
i_value     = campo_prueba.
ENDIF.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING
i_row_id    = ls_mod_cell-row_id
i_fieldname = 'CELL1'
IMPORTING
e_value     = lv_value.
IF lv_value = lv_value1.
EXPORTING
i_msgid     = 'SU'
i_msgno     = '000'
i_msgty     = 'E'
i_msgv1     = 'Only one cell '
i_fieldname = ls_mod_cell-fieldname
i_row_id    = ls_mod_cell-row_id.
ENDIF.
ENDLOOP.
ENDFORM.                    " HANDLE_DATA_CHANGED
With this code, i can check only one time the cells. If I clear cell2 press enter, and then I write in cell2 again it code doesn't work.
How can i do it with other method?

Tuesdays 1st 2nd 3rd 4th 5th MB
Jan 4, 2011 7 14 21 28 36 32
Jan 11, 2011 5 15 25 28 38 16
Jan 18, 2011 2 17 25 28 38 25
Okay, say the above is my table, how do I compare two cells in a row for two numbers? Say I wanted to find out if row A2 contained a 7 and a 28?
"A2" is an address for a single cell, not a row. Its current content, assuming no empty rows above or empty columns left of what's shown, is "Jan 4, 2011". Perhaps you mean Row 2, or the range B2:G2.
Assuming that you want to know 'if' (or 'how many times') two specific numbers occur in the range of cells from column B to column G in a single row, COUNTIF is the function you want.
Place the two target numbers into cell I1 and J1.
Enter the formula below into I2:
=COUNTIF($B2:$G2,I$1) Fill the formula right into J2, then fill both down to row 4. You'll get a count of the occurrences of each number. If you want only a "Yes" (both numbers appear in the range) or "No" (neither of the numbers appear, or one appears but not the other), use this variation (in I2 or J2): =IF(AND(COUNTIF($B2:$G2,I$1)>0,COUNTIF($B2:$G2,J$1)>0),"Yes","No") Regards, Barry • How to change the color of letters instead of highlight the text when compare two documents Hello!! I have the Adobe Acrobat 9 Pro (Versión 9.0.0) and I need to compare two documents, but I want to show the diferences changing the color of letters instead of highlight the text with any color. My boss tell me that other Acrobat version have this option, but I couldn't find it in this version. Could you help me on this topic?? Thanks Hello!! I have the Adobe Acrobat 9 Pro (Versión 9.0.0) and I need to compare two documents, but I want to show the diferences changing the color of letters instead of highlight the text with any color. My boss tell me that other Acrobat version have this option, but I couldn't find it in this version. Could you help me on this topic?? Thanks • Tool for comparing two schemas.... Do we have any tool avalilable in oracle that compares two different schemas and find out the differences between two so that we can validate a schema against a standard one? Hi. Toad have option that is called just like that , compare schemas, and when used to compare two schemas it outputs diferences between them. I dont know about any other tool. • Cycle through list and build compound array... I have a database that I'm pulling data from that is already existing. There is a designs table and a details table. The designs table stores the id's of the details items that are associated with the design. Since I'm using Flash remoting I would like to just get all the designs and their details back in one compound array instead of making a bunch of calls. I'm stuck on how to make the string "5,8,12,19" into an array, cycle through the array and then get the details info for each id. Then return the compound array when finished. I would prefer the array be like this: [design item 1 and it's data][details array of the design 1 items], [design item 2 and it's data][details array of the design 2 items].... Here is what I have so far <cffunction name="getDesignsByAct" access="remote" returntype="query" hint="gets activities by id"> <cfargument name="send_id" type="numeric" required="yes" /> <cfquery name="getDesignsByActQuery" datasource="#dsn#"> SELECT design_id, design_items FROM designs_table WHERE design_activity = #send_id# </cfquery> <cfquery name="getDetailsQuery" datasource="#dsn#"> SELECT FROM details_table WHERE <!-- cycle through the list of "design_items" in the above query --> </cfquery> <cfset this_return[1] = getDesignsByActQuery> <cfset this_return[2] = getDetailsQuery> <cfreturn this_return > </cffunction> Thanks in advance. Is your end goal to get a multi-dimensional array? a query recordset object? or an array of structs? Based on your description, it looks like you want something like this: arrMultiDimArray = NewArray(2) arrMultiDimArray[1][1] = Query Data from Design Record 1 ArrMultiDimArray[1][2] = Array of Detail records data structures (or query recordset object?) associated with design record 1 If that is the case, then you should be able to put something together like this: 1) Query your design & details data from the database as a joined recordset 2) Initialize your multi dimensional array 3) You can use the <cfoutput group=""> attribute to create an outer loop that only changes once for each new design ID 4) Increment your first dimension array and add your design data to position one of your 2nd dimension 5) Create a new array to store your Detail record items 6) Use a nested <cfoutput> loop to loop over your detail item records and populate your new array 7) Store your new array in position two of your 2nd dimension 8) Return your 2D array to your flash remoting app • Looping through javabean array in jsp? Hello, In my servlet, I created an ArrayList of objects and pass these to a jsp page using: req.setAttribute("bean", uploadList); The ArrayList contains objects of the FileBean class, with a getIndex, and getDate methods. Could any possibly demonstrate how to loop through the ArrayList in the jsp and display the FileBean object values in a html table? To display the values of a javabean in jsp pages I normally have to use for example, requestScope.bean.getMethod(); Thanks No, that would be requestScope.bean.attributename, if your getter method has the same name as the attribute you are getting. To loop through an array you have to use the c:forEach tag. Check google for "jstl foreach example", there are loads of examples. • Looping through an array, i dont want duplicates hello, I am wondering if anyone can help me please, I have an array containing numbers, these numbers are attached to movie clips to determine where they are on the stage, and they are generated randomly, so the movie clips are always in a new place when a certain button is pressed. My problem is that I dont know how to avoid duplicates. The way I have done it is I have put the values in an array, and I loop through this with a for loop, from here I take the values and link them to another array that contains the movie clips, this all works well but some of the movie clips are stacked on top of one another because the same array values are coming up :S I have attached the code, so any suggestions would be gratefully recieved, I just havent a clue on this one :S Many thanks any help is gratefully recieved :D Hi. You were wise to trace the value of n. Your problem seems to be that the tests succeed (almost always) in the very first iteration because they truly don't match (where n = 0) and execution breaks out. You need to adjust the logic. As one approach, while sticking with your code and not changing it too much (such as using more efficient int vs Number): at the very top, define a counter var ct:int = 0; before the testing loop, define a flag, such as var flag:boolean = false; you could then invert the logic in the loop and test for == rather than for != if you find a match, do--> flag = true; and break at the end of testing, use the flag to decide whether to store the new value if (!flag) { // add to array ct++; also, use a while loop for controlling the whole thing--> while(ct < max) { } to know when you're done You can also check out the Array functions indexOf() and some(), to make things more efficient and faster/easier when you're all done, you can also look into using if (a != b && c != d) for efficiency, instead of nesting them separately good luck :) • How do I lope through array, delete clip and remove from array I have a function that creates an instance of a movieClip and adds it to an array. In my gameloop I loop through the array and change some values. Now I want a cleanup function that loops through the array, and if the y value exceeds a certain value, I want to delete the clip instance and remove the record in the Array. Could someone please help me with the syntax for that? I will lay the code out below. Thankyou I still haven't gotten an answer on this one, and my client is starting to push me to fix the bug. I have created a number of instances of a movie clip, and I have also pushed references to each clip into an array. Then I loop through the array and do things. At some point I want to loop through the array and delete the original clips (removeChild). I don't know the syntax for that. for (var n:int = 0; n<myClipArray.length; n++){ removeChild (myClipArray[n]) // I WANT THE LINE ABOVE TO DELETE THE MOVIE CLIP I'd like to think there is some way to do that. • Looping through an array to pass out the variable to Scanner I'm trying to get an array of files which end .list in a particular directory and then scan each one for an email address and at the moment print it out. As I understand it Scanner doesn't read from File but will from a String. However each time I try putting it into a String, I get an error as the code tries to pass the full array to it rather than the file names. What would be the best way of looping through the array so that each time Scanner gets a new path name applied to it? import java.io.*; import java.util.Arrays; import java.util.Scanner; import java.util.regex.*; import java.io.File; public class FindEmail { public static void main(String[] args) throws IOException { File userDir = new File("M:\\foo\\bar"); FileFilter listfilter = new fileFinder(); File[] foundarray = userDir.listFiles(listfilter); for (File i: foundarray) { Scanner s = new Scanner(new File(foundarray)); try { Pattern p = Pattern.compile("([\\w+|\\.?]+)\\[email protected]([\\w+|\\.?]+)\\.(\\w{2,8}\\w?)"); String str = null; while ( (str = s.findWithinHorizon(p, 0)) != null ){ System.out.println(str); } finally { if (s != null) { s.close(); }//if }//finally }//for } //main }//class //class to find the list files class fileFinder implements FileFilter { public boolean accept(File file) { return file.getName().toLowerCase().endsWith(".list"); } The error that I got was Exception in thread "main" java.io.FileNotFoundException: [M:\foo\MAIN\BEDEWORK.LIST, M:\foo\MAIN\BEDEWORKSPRIVATE.LIST, M:\foo\MAIN\DONNA-NEW.LIST, M:\foo\MAIN\DONNA-NEWER.LIST, M:\foo\MAIN\DONNA-TEST.LIST] (The filename, directory name, or volume label syntax is incorrect) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.util.Scanner.<init>(Unknown Source) at org.stfc.bedework.FindEmail.main(FindEmail.java:17)At the time I had the code: FileFilter listfilter = new fileFinder(); File[] foundarray = userDir.listFiles(listfilter); String name = Arrays.toString(foundarray); for (int i=0; i<name.length(); i++) { Scanner s = new Scanner(new File(name)); • Loops and Arrays help Hi, I'm a freshman in college and new to java. I am completely lost and really need help with a current assignment. Here are the instructions given by my teacher... Building on provided code: Loops and Arrays Tracking Sales Files Main.java and Sales.java contain a Java application that prompts for and reads in the sales for each of 5 salespeople in a company. Files Main.java and Sales.java can be found here http://www.ecst.csuchico.edu/~amk/foo/csci111/labs/lab6N/Main.java and here http://www.ecst.csuchico.edu/~amk/foo/csci111/labs/lab6N/Sales.java It then prints out the id and amount of sales for each salesperson and the total sales. Study the code, then compile and run the program to see how it works. Now modify the program as follows: 1. (1 pts) Compute and print the average sale. (You can compute this directly from the total; no new loop is necessary.) 2. (2 pts) Find and print the maximum sale. Print both the id of the salesperson with the max sale and the amount of the sale, e.g., "Salesperson 3 had the highest sale with$4500." Note that you don't necessarily need another loop for this; you can get it in the same loop where the values are read and the sum is computed.
3. (2 pts) Do the same for the minimum sale.
4. (6 pts) After the list, sum, average, max and min have been printed, ask the user to enter a value. Then print the id of each salesperson who exceeded that amount, and the amount of their sales. Also print the total number of salespeople whose sales exceeded the value entered.
5. (2 pts) The salespeople are objecting to having an id of 0-no one wants that designation. Modify your program so that the ids run from 1-5 instead of 0-4. Do not modify the array-just make the information for salesperson 1 reside in array location 0, and so on.
6. (8 pts) Instead of always reading in 5 sales amounts, allow the user to provide the number of sales people and then create an array that is just the right size. The program can then proceed as before. You should do this two ways:
1. at the beginning ask the user (via a prompt) for the number of sales people and then create the new array
2. you should also allow the user to input this as a program argument (which indicates a new Constructor and hence changes to both Main and Sales). You may want to see some notes.
7. (4 pts) Create javadocs and an object model for the lab
You should organize your code so that it is easily readable and provides appropriate methods for appropriate tasks. Generally, variables should have local (method) scope if not needed by multiple methods. If many methods need a variable, it should be an Instance Variable so you do not have to pass it around to methods.
You must create the working application and a web page to provide the applications information (i.e., a page with links to the source code, the javadoc and an object model) to get full credit. You can use the example.html's from the last two labs to help you remember how to do this.
I'm not asking for someone to do this assignment for me...I'm just hoping there is someone out there patient and kind enough to maybe give me a step by step of what to do or how to get started, because I am completely lost from the beginning of #1 in the instructions.
Any help would be much appreciated! Thank you!
Message was edited by:
Scott_010
Message was edited by:
Scott_010

First ask the person who gave this asignment as to why do you require two classes for this , you can have only the Sales.java class with main method in it . Anyways.
Let Main.java have a main method which instanciates a public class Sales and calls a method named say readVal() in Sales class.
In the readVal method of sales class define two arrays i.e ids and sales. Start prompting the user for inputting the id and sales and with user inputting values keep storing it in the respective arrays .. Limit this reading to just 5 i.e only 5 salesPerson.
Once both the arrays are populated, call another method of Sales class which will be used for all computations and output passing both the arrays.
In this new method say Compute() , read values from array and keep calculating total,average and whatever you want by adding steps in just this loop. You can do this in readval method too after reading the values but lets keep the calculation part seperate from input.
You must create the working application and a web page to provide the applications information (i.e., a page with links to the source code, the javadoc and an object model) to get full credit. You can use the example.html's from the last two labs to help you remember how to do this. I think this is ur personal stuff , but if you want to use web page , you probably will require to use servlet to read values from the html form passed to the server.

• I noticed that any other code in my while loop only gets called at the 1st time through the loop and when a event is executed.

HI there!
I have a while loop, in which i am reading from/writing  to a compact rio. Furthermore, i added a event structure, its the 1st time i'm using it so i'm a bit lost at times.
I have the event structure set up for all my button i want to trigger an event. However, i have some other code which i would also like to be executed, evebn though no event has been executed.
I noticed that the other stuff in the loop only gets executed the 1st time through the loop and when an event is triggered.
My question therefore is, how do i get the other stuff to execute as well?
Thanks.
Regards,

Put the other code in the timeout event case.  Wire some positive value to the timeout hourglass input.  That code will execute everytime a timeout occurs.  For instance, if you wire 100 into the timeout, the code in that case will execute every 100 mSec.
- tbob
Inventor of the WORM Global

• Comparing two rows field by field through a loop

Hi all,
I've got a tricky issue:
There are two tables (almost) identically designed;
In the first one there are lets say some new data and in the 2nd one there is data to be hold & adjusted;
I built up a third table, which contains the meta informations about the two other tables (i.e. it describes the tables, so for each field of these tables, there is the field name, field type, primary key marker, etc.);
The challenge now is, how can I compare two rows (of the same primary key) field by field and get out the differences (and adjusting the target table row) using PL/SQL procedures/functions.
I thought a create a cursor over the 3rd table and call functions to get the fields out (given by the field name of the cursor), compare the two fields and return if it's equal or different...
As I've seen, there is now direct way to replace a field name in a statement - but how to resolve this with a cool workaround?
In addition, there are about 120 pairs of such tables, to be compared in the same way - so I decided to prevent creating hard coded design for the software.
Even the selection of a pair of rows from the two tables should be parameterized, 'cause the primary keys are of course different in the 120 table pairs.
Any hints or suggestions?
Thanks in advance & regards,
Peter

Hi Peter,
I am very far from being an expert in Oracle but, everything I've read so far strongly suggests that PL/SQL is often the fastest among the customized solutions (beating even compiled C code). The reason - from what I've understood - is that PL/SQL is part of the Oracle kernel/engine, other languages simply aren't.
I suggest you do your own research to confirm what I've just said above.
On a completely different note, when I first read your post, I started writing a reply and decided to discard it because, I figured you probably would find it too far off your original thoughts. However, then you wrote:
>
There are some reasons to prevent hard coding, but it may be possible to generate the PL/SQL-code for each pair of tables by an external program.
>
This is exactly what I was mentioning in the post I ended up discarding. The basic step by step process I was going to mention is as follows:
STEP 1: If possible, write one PL/SQL program that does the job properly for one set of tables. Test it thoroughly and identify potential differences in the process if it had to be applied against other tables. Make it as generic as reasonably possible, that is, keeping the code as simple as possible.
STEP 2: turn the working code of step 1 into a template (usually replacing table names, columns, etc by some token that would not be a valid name).
STEP 3: generate a list of the tables and their corresponding columns you need to process. This list may need to be massaged a little to become the generating seed of 120 programs (or so based on what you've said).
STEP 4: if you don't know Perl or AWK then (don't be alarmed...) download AWK (not Perl) and learn it... you can learn the thing in a couple days (maybe even less). It is a very simple and straightforward text processing language, I know non progammers that learned enough in one day to do useful things with it. Using AWK you can easily generate the 120 programs you need from a working template in very little time (a few hours after you've become proficient). By the way, there is AWK, GAWK, NAWK, all pretty much the same thing and all free. The standard manual for AWK is the one written by the authors Aho, Weinberger and Kernigan, about 100 small pages, it's an easy read and no programmer should be without it :) (better than American Express!)
What you've described sounds just like the thing to use AWK for. I once used AWK to generate 27,000 (that's 27 thousand) lines of COBOL code, debugged and fully tested in 2 days! (testing was automated using AWK too!) It would have taken much longer to just type all that code.
Anyway, I hope that gives you something to think about and be of some help.
John.