Shifting through an array
I am trying to iterate through an array using a set of coordinates, when the number's of the coordinate is positive the x’coord moves right and the y’coords moves left. When the number's of the coordinate is negative it moves in the opposite direction.
So if x ‘coord is 4 it will move 4 element to the right
and if x ‘coord is -4 it will move 4 element to the left
Therefore in some cases I will need to move from the end of the array to the beginning.
I will be really grateful for any help offered. Thank you.
Therefore in some cases I will need to move from the
end of the array to the beginning.I think the post is pretty vague, but it seems the above is the key. You want a "circular" array? After adding/subtracting from the index, compare the result with the length of the array. If the result is < 0, add array.length to it. If it is >= array.length, subtract array.length from it.
So, for example, if your array is 10 long (indexes 0 thru 9), and you are currently at index 7 (the 8th element), and you "move" by +5, 7 + 5 = 12, which is outside the array boundaries, so you subtract 10, giving the final new index = 2 (or the 3rd element). Clear as mud?
Similar Messages
-
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();
ThanksNo, 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. -
Iterrate through an array of files
I am having trouble with the following program, making to iterate through an array of three files, that
are placed in a directory below the program directory. What I would like my program to do is to read 10 lines of each of the files in the subdirectory and then go back and read another 10 lines from the each files(remembering which file is which) and so on till all the files are read. The number of the files in the subdirectory can change, therefore nothing should be hardcoded!
Here is the program so far:
public class thekernel {
public void thekernel() {}
public void executeKernel() throws Exception {
boolean read = false;
String input_line = null;
int quantum = 10;
int programCounter = 0;
String dirname = "processdir";
File f1 = new File(dirname);
if (f1.isDirectory()){
String s[] = f1.list();
for(int i = 0; i < s.length; i++) {
System.out.println (s);
while ( i < s.length ) {
RandomAccessFile fr =
new RandomAccessFile (("processdir/")+s[i], "r");
while (((input_line=fr.readLine()) != null) &&
( programCounter < quantum )){
System.out.println (input_line);
programCounter++;
i++;
programCounter = 0;
public static void main(String args[]) throws Exception {
thekernel K = new thekernel();
K.executeKernel();
here is the output it produces at the moment:
Process_1.txt
1FORK 1F1
FORK 2
WAIT 4
WAIT 2
FORK 5
FORK 6
ABCD 7
FORK 8
FORK 9
ABCD 10
2FORK 1F2
FORK 2
ABCD 3
WAIT 4
FORK 5
FORK 6
ABCD 7
FORK 8
FORK 9
ABCD 10
3FORK 1F3
FORK 2
ABCD 3
WAIT 1
FORK 5
FORK 6
ABCD 7
FORK 8
FORK 9
ABCD 10
Any help much appreciated.........................You should create an collection of rafs, one for each file, then when you switch between files, the location will be intact.You still need to logic to determine when all of the files have been read. One idea could be to use a vector to hold the rafs, and remove each one as the the eof is reached. When the vector is empty, then all of the files will have been read.
Something like:
public void executeKernel() throws Exception {
final int QUANTUM = 10;
String dirname = "processdir";
File f1 = new File(dirname);
if (f1.isDirectory()){
String s[] = f1.list();
class Foo {
public String name;
public RandomAccessFile file;
public Foo(String name, RandomAccessFile file) {
this.name = name;
this.file = file;
Vector files = new Vector()
for(int x = 0; x < s.length; x++)
files.add(new Foo(s[x], new RandomAccessFile (("processdir/")+s[x], "r"))));
String input_line = null;
int programCounter = 0;
while(files.size() > 0) {
for(int i = 0; i < files.size(); i++) {
System.out.println ( ((Foo)files.elementAt(i)).name );
programCounter = 0;
while (programCounter < quantum ) {
if( (input_line = ((Foo)files.elementAt(i)).file.readLine()) != null) {
System.out.println (input_line);
programCounter++;
else {
files.removeElementAt(i);
programCounter = quantum; -
Searching through an array of objects
Hi, I am currently working on an assignment where I have to create a class called Persons with data fields of Name(String),age(int),income(int).
All the values including the string values for name and values for income and age are all randomly generated and are stored in an array of objects of class "Persons".
The array size is user specified.
What I must attempt to implement now is to make a search feature that lets the user search through the array of objects for a particular name.
I'm having some bad luck trying to implement this feature.
If anyone can help me, I would greatly appreciate that!
Cheers.Hi, Thank you for the prompt reply.
I do not yet know HOW to start this,I mean I know how to search for individual characters in an element of an array, but to search for whole strings I am quite unsure.
public class Persons
//data fields
private String name;
private int age;
private int income;
//Constructor for Class Persons
public Person(String[] name,int[] age,int[] income)
String[] tempName = name;
int[] tempAge = age;
int[] itempIncome = income;
//Instance method for returning some basic values about personal data
public void toString(Persons ofChoice)
System.out.println("Persons Data");
System.out.println("Name: " + ofIntrest.name);
System.out.println("Age: " + ofIntrest.age);
System.out.println("Income: $" + ofIntrest.income);
}This is my Persons class code, but I am quite stumped how to search for whole strings at the time being. -
Dear Forum members,
Can anyone provide some guidance about how to step through and process data in an array file. My outline LabVIEW program is to carry out the following steps:
(1) Take the first 5 samples from the data file (which contains 1000 samples)
(2) Process calculation
(3) Take the next 5 samples and process calculation Step (2) until the last batch of samples is reached
I understand that I will need a loop (200 x 5 samples = 1000 samples analysed), but what I cannot get is how to programmatically step through the array rows, 5 at a time. If anyone can help it would be appreciated.
Regards,
Solved!
Go to Solution.Hi bunnykins,
Using the Array Subset vi, this becomes a fairly simple problem.
Just specify a start point and a length of data you want then you can pull a small array of data out of a large one.
I have attached an example for you to tweak to whatever you need.
Enjoy!
-Rob Afton
Electrical Engineering Intern
GHSP
Attachments:
Subarray Calculations.vi 12 KB -
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+|\\.?]+)\\w+@([\\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)); -
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 :) -
BASH: iterate through an array passed in
I have the following function that does not iterate through the array I want to be able to do some maanipulation on each element in the array[@] Any ideas whats wrong with the below for loop ????
function foo() {
name =$1
array=( "$2" )
for i in `seq 0 $(( ${#array[@]} - 1 ))`; do
echo "$i: ${array}"
echo "./prog $name ${array[i]}"
done
NAME ="BLAH"
arrayP+=("TEST") ;
arrayP+=("TESTB")
arrayP+=("TESTC")
foo $NAME "${arrayP[@]}"
Edited by: user618557 on 19-May-2011 12:57Your code needs a small correction in order to work, at least when I tried:
foo "${name}" "${array[@]}"
should read
foo "${name}" "${arrayP[@]}"However, I would use a different approach, which is perhaps also not as ugly:
#!/bin/bash
foo() {
name="$1"
for i in $2; do
set -- $i
echo "$name $*"
done
name="BLAH"
arrayP+=("TEST")
arrayP+=("TESTB")
arrayP+=("TESTC")
foo "$name" "${arrayP[*]}"gives:
$ ./allarray
BLAH TEST
BLAH TESTB
BLAH TESTCI used this also in the previous thread BASH 3.2.25 multidemsional arrays which however, apparently wasn't helpful. -
Looping through an array to get the index for each measure in a combo box
Hi folks,
I am working on a web application that has two combo boxes, one for year (called yearcombo) and for measures (called myURL) for that selected year, and also two radiobuttons (in radioBtnGroup). I have two years and a bunch of measure for each year. I have a map tool tip that when you mouse over the county you see a measure for that specific year. However I have a bunch of measures for each year and I want to be able to loop through the measures (which are in an array collection inside a combobox) so my "if" expression can find every selectedIndex and bring me the tool tip for that selected measure for that selected radio button. Right now I would have to create if statements for each measure (each selectedIndex inside the myURL combobox)and each radiobutton (inside the radioBtnGroup) instead of creating a if expression to get a map tip tool for each measure. I know I would have to create a loop to search for these indexes and enter that in the if expression and also change the graphic.attributes to reflect the right measure or index selected. Do you API for Flex wizards can give me any tips on how to code this according to my code below ? Any help is greatly appreciated! (the print scree is attached)
Below is the code snippet:
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirIndOut.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
And below is the combo boxes with the arrays
<mx:FormItem label="Year :" >
<mx:ComboBox id="yearcombo" selectedIndex="0" labelField="label" width="100%" change="changeEvt(event)" >
<mx:ArrayCollection id="year" >
<fx:Object label="2007" year="2007" />
<fx:Object label="2009" year="2009" />
</mx:ArrayCollection>
</mx:ComboBox>
</mx:FormItem>
<mx:FormItem label="Measure:">
<mx:ComboBox id="myURL" selectedIndex="8" width="80%" mouseOver="clickEv2(event)" close="closeHandler(event)">
<mx:ArrayCollection id="measures" >
<fx:Object id="forindout07" labeltext="2007 Forestry Industry Output" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_07_forest_industry_output" year="2007" />
<fx:Object id="foremp07" label="2007 Forestry Employment " value="RADIO_BUTTONS/TFEI_07_forest_employment" year="2007" />
<fx:Object id="forlabinc07" label="2007 Forestry Labor Income " value="RADIO_BUTTONS/TFEI_07_forest_labincome" year="2007" />
<fx:Object id="forindbustax07" label="2007 Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_07_forest_business_tax" year="2007" />
<fx:Object id="forindout09" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_09_forest_industry_output" year="2009" />
<fx:Object id="foremp09" label="2009 Forestry Employment " value="RADIO_BUTTONS/TFEI_09_forest_employment" year="2009" />
<fx:Object id="forlabinc09" label="2009 Forestry Labor Income " value="RADIO_BUTTONS/TFEI_09_forest_labincome" year="2009" />
<fx:Object id="forindbustax09" label="2009 Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_09_forest_business_tax" year="2009" />
<fx:Object id="blank" label=" " />
</mx:ArrayCollection>And here is the entire code
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"
paddingBottom="8" paddingLeft="8"
paddingRight="8" paddingTop="8"
backgroundColor="0xffffff"
layout="vertical" >
<!-- Start Declarations -->
<fx:Declarations>
<esri:SimpleFillSymbol id="mouseOverSymbol" alpha="0.5" color="0x808080">
<esri:SimpleLineSymbol width="0" color="#000000"/>
</esri:SimpleFillSymbol>
<esri:SimpleFillSymbol id="defaultsym" alpha="0.01" color="#E0E0E0" >
<esri:SimpleLineSymbol width="1" color="#000000"/>
</esri:SimpleFillSymbol>
<!-- End Declarations -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.SpatialReference;
import com.esri.ags.esri_internal;
import com.esri.ags.events.GraphicEvent;
import com.esri.ags.geometry.Extent;
import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
import com.esri.ags.symbols.SimpleFillSymbol;
import com.esri.ags.symbols.SimpleLineSymbol;
import flash.utils.flash_proxy;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.RadioButton;
import mx.controls.TextArea;
import mx.events.DropdownEvent;
import mx.events.ItemClickEvent;
import mx.rpc.Fault;
import mx.rpc.events.FaultEvent;
import flash.display.Sprite;
import flash.events.ErrorEvent;
import flash.events.MouseEvent;
private function closeHandler(evt:DropdownEvent):void {
myLabel.text = ComboBox(evt.target).selectedItem.labeltext;
private function loadLayerName():void
myLegend.layers = null;
layerPanel.removeAllChildren();
//loop through each layer and add as a radiobutton
for(var i:uint = 0; i < (dynamicLayer.layerInfos.length); i++)
var radioBtn:RadioButton = new RadioButton;
radioBtn.groupName = "radioBtnGroup";
radioBtn.value = i;
radioBtn.label = dynamicLayer.layerInfos[i].name;
if (dynamicLayer.layerInfos[i].name == "Direct Impact (Million $)")
radioBtn.label = "Direct Impact";
else if (dynamicLayer.layerInfos[i].name == "Total Impact (Million $)")
{radioBtn.label = "Total Impact";
else if (dynamicLayer.layerInfos[i].name == "Total Impact (Jobs)")
{radioBtn.label = "Total Impact";
else if (dynamicLayer.layerInfos[i].name == "Direct Impact (Jobs)")
{radioBtn.label = "Direct Impact";
else
{radioBtn.visible= false;
layerPanel.addChild(radioBtn);
/* myDividerBox.getDividerAt(0).visible = false; */
//set the visible layer the first radio button
radioBtnGroup.selectedValue = 0;
dynamicLayer.visibleLayers = new ArrayCollection([0]);
myLegend.layers = [dynamicLayer];
myLegend.visible = true;
private function radioClickHandler(event:ItemClickEvent):void
myLegend.layers = null;
// update the visible layers to only show the layer selected
dynamicLayer.visibleLayers = new ArrayCollection([event.index]);
myLegend.layers = [dynamicLayer];
private function changeEvt(event:Event):void {
if (yearcombo.selectedItem.year == "2007")
measures.filterFunction=filter1
measures.refresh()
myURL.dataProvider=measures
else if (yearcombo.selectedItem.year == "2009")
measures.filterFunction=filter2
measures.refresh();
public function filter1(item:Object):Boolean
if (item.year=="2007") return true
else return false
public function filter2(item:Object):Boolean
if (item.year=="2009") return true
else return false
private function clickEvt(event:Event):void {
if (yearcombo.selectedItem.year == "2007")
measures.filterFunction=filter3
measures.refresh()
myURL.dataProvider=measures
else if (yearcombo.selectedItem.year == "2009")
measures.filterFunction=filter4
measures.refresh();
public function filter3(item:Object):Boolean
if (item.year=="2007") return true
else return false
public function filter4(item:Object):Boolean
if (item.year=="2009") return true
else return false
private function clickEv2(event:Event):void {
if (yearcombo.selectedItem.year == "2007")
measures.filterFunction=filter5
measures.refresh()
else if (yearcombo.selectedItem.year == "2009")
measures.filterFunction=filter6
measures.refresh();
else if (yearcombo.selectedItem.year == 2007 && myURL.selectedIndex==8)
myLegend.layers = null;
layerPanel.removeAllChildren();
public function filter5(item:Object):Boolean
if (item.year=="2007") return true
else return false
public function filter6(item:Object):Boolean
if (item.year=="2009") return true
else return false
/* IF YOU WANT TO INCLUDE OTHER VALUES IN THE MAP TOOLTIP LIKE COUNTY NAME AND THE LABEL OF THE SELECTED ITEM
if (myURL.selectedIndex==0)
myTextArea.htmlText = "<b>County: </b>" + gr.attributes.NAME + "\n"
+ "<b>Measure: </b>" + myURL.selectedItem.label + gr.attributes.ForDirIndOut.toString()
public function fLayer_graphicAddHandler(event:GraphicEvent):void
event.graphic.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverHandler);
event.graphic.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler);
public function onMouseOverHandler(event:MouseEvent):void
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirIndOut.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 1)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpIndOut.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirEmp.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 1)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpEmp.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirLabInc.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 1)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpLabInc.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2007" && myURL.selectedIndex == 3 )
fLayer.definitionExpression = "DATA_YEAR_TXT like '2007'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForIndirBusTax.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirIndOut.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 0 && radioBtnGroup.selectedValue == 1)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpIndOut.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirEmp.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 1 && radioBtnGroup.selectedValue == 1)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpEmp.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 0)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForDirLabInc.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 2 && radioBtnGroup.selectedValue == 1)
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForTotImpLabInc.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
if (yearcombo.selectedItem.year == "2009" && myURL.selectedIndex == 3 )
fLayer.definitionExpression = "DATA_YEAR_TXT like '2009'"
var graphic:Graphic = Graphic(event.currentTarget);
graphic.symbol = mouseOverSymbol;
var htmlText:String = graphic.attributes.htmlText;
var textArea:TextArea = new TextArea();
try{
textArea.htmlText = myURL.selectedItem.label + graphic.attributes.ForIndirBusTax.toString()
myMap.infoWindow.content=textArea
myMap.infoWindow.label = graphic.attributes.NAME;
myMap.infoWindow.closeButtonVisible = false;
myMap.infoWindow.show(myMap.toMapFromStage(event.stageX, event.stageY));}
catch(error:Error) {
trace("Caught Error: "+error);
public function onMouseOutHandler(event:MouseEvent):void
var gr:Graphic = Graphic(event.target);
gr.symbol = defaultsym;
myMap.infoWindow.hide();
]]>
</fx:Script>
<fx:Style>
@namespace esri "http://www.esri.com/2008/ags";
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace esri "http://www.esri.com/2008/ags";
@namespace components "com.esri.ags.components.*";
components|InfoWindow
content-background-alpha : 0.4;
background-color : #4A7138;
background-alpha : 0.7;
border-style : solid;
</fx:Style>
<mx:HBox width="930" height="800" id="mapHbox" horizontalAlign="center" >
<mx:HBox width="80">
</mx:HBox>
<mx:HBox id="myHBox" width="800" height="600" backgroundColor="0xffffff" >
<mx:VBox height="590" width="358" >
<!-- <mx:Panel
width="356" height="100%"
color="0x000000"
borderAlpha="0.15"
>
-->
<mx:Canvas height="100%" width="100%" backgroundColor="0xffffff" >
<esri:Map id="myMap" openHandCursorVisible="false"
height="100%"
logoVisible="false"
doubleClickZoomEnabled="false"
scrollWheelZoomEnabled="false"
zoomSliderVisible="false"
scaleBarVisible="false" scale="4000000" >
<esri:extent>
<esri:Extent xmin="-10736651.061900" ymin="4024099.909700" xmax="-10409195.669800" ymax="3440153.831100" >
<esri:SpatialReference wkid="102100"/>
</esri:Extent>
</esri:extent>
<esri:ArcGISDynamicMapServiceLayer id="dynamicLayer2"
url="http://tfs-24279/ArcGIS/rest/services/RADIO_BUTTONS/counties_layer/MapServer" />
<esri:ArcGISDynamicMapServiceLayer id="dynamicLayer" name=" "
alpha="1"
load="loadLayerName()"
url="http://tfs-24279/ArcGIS/rest/services/{myURL.selectedItem.value}/MapServer" />
<esri:FeatureLayer id="fLayer"
graphicAdd="fLayer_graphicAddHandler(event)"
mode="snapshot"
outFields="*"
symbol="{defaultsym}"
url= "http://tfs-24279/ArcGIS/rest/services/RADIO_BUTTONS/feature_layer_0709_five/FeatureServer/ 0" />
</esri:Map>
</mx:Canvas>
<!-- </mx:Panel>-->
</mx:VBox>
<mx:VBox height="590" width="20" >
</mx:VBox>
<mx:Canvas height="500" width="400" backgroundColor="0xffffff"
horizontalScrollPolicy="off"
verticalScrollPolicy="off" >
<mx:VBox width="420" height="50%" paddingLeft="5" paddingTop="10" paddingRight="10" paddingBottom="10"
verticalGap="8">
<mx:Form >
<mx:FormItem label="Year :" >
<mx:ComboBox id="yearcombo" selectedIndex="0" labelField="label" width="100%" change="changeEvt(event)" >
<mx:ArrayCollection id="year" >
<fx:Object label="2007" year="2007" />
<fx:Object label="2009" year="2009" />
</mx:ArrayCollection>
</mx:ComboBox>
</mx:FormItem>
<mx:FormItem label="Measure:">
<mx:ComboBox id="myURL" selectedIndex="8" width="80%" mouseOver="clickEv2(event)" close="closeHandler(event)">
<mx:ArrayCollection id="measures" >
<fx:Object id="forindout07" labeltext="Forestry Industry Output" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_07_forest_industry_output" year="2007" />
<fx:Object id="foremp07" label="Forestry Employment " value="RADIO_BUTTONS/TFEI_07_forest_employment" year="2007" />
<fx:Object id="forlabinc07" label="Forestry Labor Income " value="RADIO_BUTTONS/TFEI_07_forest_labincome" year="2007" />
<fx:Object id="forindbustax07" label="Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_07_forest_business_tax" year="2007" />
<fx:Object id="forindout09" label="Forestry Industry Output " value="RADIO_BUTTONS/TFEI_09_forest_industry_output" year="2009" />
<fx:Object id="foremp09" label="Forestry Employment " value="RADIO_BUTTONS/TFEI_09_forest_employment" year="2009" />
<fx:Object id="forlabinc09" label="Forestry Labor Income " value="RADIO_BUTTONS/TFEI_09_forest_labincome" year="2009" />
<fx:Object id="forindbustax09" label="Forestry Indirect Business Tax" value="RADIO_BUTTONS/TFEI_09_forest_business_tax" year="2009" />
<fx:Object id="blank" label=" " />
</mx:ArrayCollection>
</mx:ComboBox>
</mx:FormItem>
</mx:Form>
<mx:VBox id="layerPanel" width="50%" height="8%" verticalGap="3" paddingLeft="17">
<mx:RadioButtonGroup id="radioBtnGroup" itemClick="radioClickHandler(event)" />
</mx:VBox>
<mx:VBox paddingLeft="17" height="50%" >
<mx:Canvas id="legendPanel" width="100%" >
<mx:Label id="myLabel" text=" " fontWeight="bold" />
<esri:Legend id="myLegend"
layers="{[dynamicLayer]}"
map="{myMap}" visible="false"
respectCurrentMapScale="false"/>
</mx:Canvas>
<mx:TextArea width="275" borderAlpha="0" height="200" >
<mx:htmlText >
<![CDATA[<font size='11'><b>Note:</b> Counties in white indicate either no data is available for that measure or the data has been supressed due to confidentiality.</font>
]]>
</mx:htmlText>
</mx:TextArea>
</mx:VBox>
</mx:VBox>
</mx:Canvas>
</mx:HBox>
</mx:HBox>
</mx:Application> -
Programmat​ically Cycle through Boolean Array
I'm using an Agilent 34970 with a 34901A switch module. It has 16 switches going to two commons. The end function is to switch through all the sources to read resistance and voltage.
The driver and sample vi from the NI idnet were used as a base for my vi.
The sample vi uses a user-controlled 2-d boolean array (false = open). I want to be able to programmatically cycle through all the switches, but I don't know how to tell the dimensions of array I have.
I would like to go through every element of the 2nd raw for each element in the 1st row. If I could programmatically ignore elements #9, 10, 19, and 20, that would be helpful too.
Thanks for any help!
Attachments:
Agilent 34970 Advanced Scan-2U test-1.vi 31 KB
Agilent 34970 Switch-2U test.vi 23 KBCelerityEDS wrote:
Is there a way to determine what's in the vi front panel right now? I cannot determine if it's 2x10 or 10x2... There are no properties of the 2-d array that plainly tell me.
There is "array size" which tells you the actual size of the 2D array.
There are properties that tell you how many rows and columns are visible in the front panel array container.
There are also properties that tell which element is currently scrolled to the top left corner.
The size and index position of the front panel array control or indicator is not related to the actual array size. You can show only 2x2 elements of a 1000x1000 array or vice versa. if the container is too big, the extra elements are greyed.
LabVIEW Champion . Do more with less code and in less time . -
Shifter register for array of waveforms
Hi guys,
I was trying to use shift register to append waveforms from multiple channels to their previous waveforms correspondingly.
The problem is when I click the stop button on the front panel and saved the data, the data file contains nothint except for some words like "waveform","t0", and "dt".
The attachment is the image of my VI.
Thanks!
Jude
Attachments:
screencap3.png 101 KBYour problem is your FOR loop at the bottom. When you first call this VI, the shift register will have the default value for the data type. In this case it will be an empty array of waveforms. A FOR loop will iterate the smallest of the size of the smallest autoindexing input array or the N. Well, the smallest will be 0 because of that empty array. So the FOR loop actually does not run at all. It just outputs an empty array. What you need to do is put a case structure around that FOR loop. When the loop index of the WHILE loop is 0 (first time reading anything) set the output to the waveform you just read. If the loop index is greater than 0 run the FOR loop like you have now.
If you look at the VI I gave you here you will see what I mean.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
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 :DHi. 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 :) -
I need to essentially run a lot of insert statements of the form:
insert into (a,b,c) values (x,y,z)
and I was hoping I could create some sort of array/collection 'hard coded' with columns for x,y and z and then just iterate through them for the inserts. Is there a way that PL/SQL can do this? I'm assuming there is - but how?You could populate a collection with the values for X,Y, Z and then use a FORALL ... INSERT statement, if that's what you mean.
Cheers, APC -
Looping through an array to insert contents into an HTML table
Im trying to loop through a String array and insert the contents into an html table, unfortunately my coding is only filling in the first row in the table and ignores any additional info. Im using webservices that is connecting to a table in the database.
Info = ID + ";" + played + ";" + won + ";" + lost + ";" is the String im pulling into my client.
<table border = "1">
<tr>
<td><b>ID</b></td>
<td><b>played</b></td>
<td><b>won</b></td>
<td><b>lost</b></td>
</tr>
<%
try {
leglessclient.LegendServiceService service = new leglessclient.LegendServiceService();
leglessclient.LegendService port = service.getLegendServicePort();
String Info = port.displayLog();
String[] log = Info.split(";");
out.println("<tr>");
for (int a = 0 ; a < log.length; a++) {
for (int b = 0 ; b < 4; b++){
out.println("<td>" + (log[a]) +"</td>");
a++;
out.println("<td>" + (log[a]) +"</td>");
a++;
out.println("<td>" + (log[a]) +"</td>");
a++;
out.println("<td>" + (log[a]) +"</td>");
a++;
b++;
out.println("</tr>");
out.println("</table>");
} catch (Exception ex) {
// TODO handle custom exceptions here
%>
Any help would be greatly appreciated
thanks!firstly, if you have multiple rows.. you need to start each row with <tr> and end with a </tr>. You just have one in the beginning and end,which will obivously give data in one row.
out.println("<tr>");
for (int a = 0 ; a < log.length; a++) {
for (int b = 0 ; b < 4; b++){
out.println("<td>" + (log[a]) +"</td>");
a++;
out.println("<td>" + (log[a]) +"</td>");
a++;
out.println("<td>" + (log[a]) +"</td>");
a++;
out.println("<td>" + (log[a]) +"</td>");
a++;
b++;
out.println("</tr>"); -
Hi, I need some help with dynamic content.
The end product I need is a series of pictures loaded and
diplayed in sequence ( one fades in, then out, then another fades
in & out etc. ) I have an XML connector set up which provides
the filename to a loader which pulls up the first picture, no
problem. But I can't work out how to get the following rows from
the array & cycle through them each time the timeline returns
to the start.
any help would be great,
best wishes
Robert.I setup the demo app on apex.oracle.com:
http://apex.oracle.com/pls/apex/f?p=26255:3
Login as demo / demo
Go to the "products" tab. There is a Test region with a multiselect list. It shows product names (with product id's) from the demo_product_info table.
When you select multiple things from the list and click apply, it uses the following procedure to simply insert a new record for each into the product table. It increments the product_id by 1000 and prepends "DUPLICATE " to the product_name:
declare
cursor c_products is
select product_name, product_id
from demo_product_info
where instr(':' || :P3_X || ':', ':' || product_id || ':') >= 1
order by 1
begin
for r_product in c_products loop
insert into demo_product_info (product_id, product_name)
values (r_product.product_id + 1000, 'DUPLICATE ' || r_product.product_name);
end loop;
end;
You can see that is working by using it on the duplicate entries themselves.
-Richard
Maybe you are looking for
-
Problem in using - changing parameter
hi all , I have problem in cahange valule. FORM logo TABLES in_tab STRUCTURE itcsy out_tab STRUCTURE itcsy. DATA : pernr TYPE p_pernr, bukrs TYPE bukrs, begda TYPE begda. TABLES : ztable DATA: BEGIN OF p0001
-
Can't find preferences after migration
Just used Migration Assistant to move files from old Mini to MacBook. Appears to have transferred necessary apps, files, etc. But I can't find my preferences for key applications (firefox, address book, iphoto, email, etc.) I was able to copy over my
-
Mail sender (to me) name
I have a couple of friends who I think are sending me mail from different computers and devices and I get their emails under different names. For instance, one uses their Korean name on one device and English name on another. Is there a way that I
-
User exit needed on check of pick quantity..
Hi Gurus, This is the case. VL02n -> Delivery quantiy = 500, but picked quantity = 505. The system does give a message that the picked quantity is too large. Is there a user exit available after entering the pick quantity? The plan is to update stock
-
WebService generation and polymorphic behavior
I have a simple problem. Class A has an attribute of type Class B Class B has 2 subclasses, Class C and Class D. (it holds only a reference to Class B, but at runtime will be assigned instances of Class C and Class D). Lets say Stateless EJB has a me