Please help convering recursion to iteration
Hello all, I am relatively new with Java. I am implementing a Region Growing algorithm, and it works fine for small regions. For large regions, I get the usual stack overflow problem. I was never able to increase my stack size and didn't really want that approach. I have posted the method that does the region growing. It is messy, and I know there is stuff in there that will not make sense but, the region growing section is there. I have given up and need some help...
Thanks everyone who can help!!
private void growRegion(int x, int y) {
double red = 0;
double green = 0;
double blue = 0;
double alpha = 0;
pixelArray2 = new double[5];
wraster.getPixel(x,y,pixelArray2);
red = pixelArray2[0];
green = pixelArray2[1];
blue = pixelArray2[2];
alpha = pixelArray2[3];
pixelChange2[0] = 195;
pixelChange2[1] = 195;
pixelChange2[2] = 195;
pixelChange2[3] = alpha;
if (x < 0 || y < 0) return;
if (x >= wraster.getWidth()) return;
if (y >= wraster.getHeight()) return;
// the pixel has been assigned a threshold but has not been associated
// with a region.
if (assigned[x][y]==true && associated[x][y]==false){
wraster.setPixel(x,y,pixelChange2);
associated[x][y] = true;
// the recursive calls that are driving me nuts
growRegion(x+1,y);
growRegion(x-1,y);
growRegion(x,y+1);
growRegion(x,y-1);
}else{
// do something else...anything but recursion
}
You should use some recursion but this looks like an over-use. Method growRegion starts (after some initializations) with a termination statement,
if (x < 0 || y < 0) return;
if (x >= wraster.getWidth()) return;
if (y >= wraster.getHeight()) return; This means you could probably remove this and instead use for-loops to drive the recursion,
if (d != 0)
for (int i=x+1, l=wraster.getWidth(); i<l; i++)
growRegion(i,y,0);
if (d != 1)
for (int i=x-1; i>=0; i--)
growRegion(i,y,1);
if (d != 2)
for (int i=y+1, l=wraster.getHeight(); i<l; i++)
growRegion(x,i,2);
if (d != 3)
for (int i=y-1; i>=0; i--)
growRegion(x,i,3); The signature of growRegion is now,
growRegion(int x, int y, int d)And in the very first call d (direction) must be -1. I think this will replace lots of (unnecessary) recursion with iteration but I'm not sure. It an easy change so it could be worth a try -:)
Similar Messages
-
Please help with combining two java packages into one iteration
Hello, I work for a pharmaceutical company and run reports for credits that we have received. Currently the packages are reported seperately from the credit reports and my job is to combine them. There are two models that handle these and I need to link the second to the first with some common entities. Please help me figure out what I need to do in order to add a credit column to the report. I have a sample of the code below and would appreciate any help you can offer.
First, the info pulled about the boxes:
rm = (ReportManager) ManagerFactory.getManager(ManagerFactory.REPORTS);
items = rm.getRVSSearchResults(hvstoresid,
hvstoregroupsid,
String.valueOf(request.getParameter("price_type")).trim(),
String.valueOf(report_by).trim(),
vendor_type,
String.valueOf(request.getParameter("vendor")).trim(),
from_date,
until_date,
debitNum,
processing_type,
sort_field,
sort_direction,
includeAll222s).iterator();
Second, the page that has the data i need to transpose to the first:
PackoutModel pm = null;
int iter = searchpageposition*resultPageSize;
while (iter < packouts.size() && iter<(searchpageposition*resultPageSize)+resultPageSize)
{ pm = (PackoutModel) packouts.get(iter);
BigDecimal invoiceAmt = DataConverter.parseBigDecimalWithAlternateWhenNull(pm.getInvoiceAmt(),"0.00");
BigDecimal creditRec = DataConverter.parseBigDecimalWithAlternateWhenNull(pm.getAmtReceived(),"0.00");
BigDecimal processingFee = DataConverter.parseBigDecimalWithAlternateWhenNull(pm.getProcessFeeTotal(),"0.00");
BigDecimal shippingFee = DataConverter.parseBigDecimalWithAlternateWhenNull(pm.getShippingHandlingFeeTotal(),"0.00");
BigDecimal balanceDue =(invoiceAmt.add(processingFee.add(shippingFee))).subtract(creditRec);
All that I need from the second page is to get a value for:
DataConverter.parseBigDecimalWithAlternateWhenNull(pm.getAmtReceived(),"0.00");
which I believe must first have the store id, etc equal to the first model. So there is the existing rvs.FOO and the needed pm.BAR but since it is in an iter loop, I can't seem to figure out how to join the two.
Any ideas?could you explain your problem with a simplified schema or a more
understandable code.
(don't bother to write the details of your project plz) -
Please Help - Permutations using recursion..
Please some body help me in generating permutaions using recursion..exact guidelines are as follows..
Producing consecutive permutations.Need to develop a method that lists one by one all permutations of the numbers 1, 2, �, n (n is a positive integer).
(a) Recursive method . Given a verbal description of the algorithm listing all permutations one by one, you are supposed to develop a recursive method with the following header:
public static boolean nextPermutation(int[] array)The method receives an integer array parameter which is a permutation of integers 1, 2, �, n. If there is �next� permutation to the permutation represented by the array, then the method returns true and the array is changed so that it represents the �next� permutation. If there is no �next� permutation, the method returns false and does not change the array.
Here is a verbal description of the recursive algorithm you need to implement:
1. The first permutation is the permutation represented by the sequence (1, 2, �, n).
2. The last permutation is the permutation represented by the sequence (n, �, 2, 1).
3. If n a ,...,a 1 is an arbitrary permutation, then the �next� permutation is produced by
the following procedure:
(i) If the maximal element of the array (which is n) is not in the first position of the array, say i n = a , where i > 1, then just swap i a and i-1 a . This will give you the �next� permutation in this case.
(ii) If the maximal element of the array is in the first position, so 1 n = a , then to find
the �next� permutation to the permutation ( ,..., ) 1 n a a , first find the �next�
permutation to ( ,..., ) 2 n a a , and then add 1 a to the end of thus obtained array of (n-1) elements.
(iii) Consecutively applying this algorithm to permutations starting from (1, 2, �, n),you will eventually list all n! possible permutations. The last one will be (n, �, 2, 1).For example, below is the sequence of permutations for n = 3 .
Please help...i have trying this for long time
plesae help...i apreciate your time..and help..thank youpublic class Permu {
public static boolean nextPermutation(int a[]) {
return(permute(a, 0));
public static boolean permute(int v[], int start) {
int n = v.length;
if (start == (n - 1)) { //if its the end of the sequence genereated then print them
count++;
//print(v,n);
return false;
} else {
for (int i = start; i < n; i++) { //swap the start element with the ith element to get n first sequeces
int temp = v[start];
v[start] = v;
v[i] = temp;
permute(v, start + 1);
//of the n the first is kept constant the same is applied for the rest sequence
//int tmp = v[i];
v[i] = v[start];
v[start] = temp;
return true;
public static void main(String[] args) {
int v[] = {1, 2};//this is the array which should contain the items to be permuted
do{
for(int i=0;i<2;i++)
System.out.print(v[i]);
System.out.println();
}while(nextPermutation(v));
[i]Output:
123
123
123
123
123
This is exact code i am trying to run...pls someone help me out... -
How to make recursive query.Please help
Dear Experts:
I want to retrieve all employees located in a department in addition to all other employees located in the child's nodes of this department too.
Problem Details:
I have "Employees" table and "Departments" Table
The structure of Dept Table is:
ID primary key
parent_dept foreign key(id)
deptname varchar2
deptType varchar2
The Employee table structure is
ID primary key
dept_id foreign key(Department.id)
empName varchar2Sample data for departments
ID : 1
parent_dept : null
deptname: General Manager office
deptType : 'GM'
ID :=2
parent_dept : 1
deptname: Information tech.
deptType : 'DPT'
ID :=3
parent_dept : 2
deptname: Software Development
deptType : 'SECTION'Sample Data for employees
ID : 101
dept_id :1
empName King
ID : 102
dept_id :2
empName ALAN
ID : 103
dept_id :2
empName SAM
ID : 104
dept_id :3
empName JANEI want to create a query that accepts a parameter "p_department_id" and returns All employees on the following conditions
1- In case the parameter value is null , then retrieve All Employees "king - alan- sam-jane"
2- In Case the parameter value is 1 , then retrieve all the employees under department id =1 in addition to all the employees located under the children departments.
in this case it will be "king - alan- sam-jane"
3- In case parameter value is 2 , then return all the employees under department id =2 in addition to all the employees located under the children departments.
In this case it will be " alan- sam-jane"
4- In case parameter value is 3 , then return all the employees under department id =3 in addition to all the employees located under the children departments.
in this case it will be only "JANE"
In brief , If I pass any value to the parameter :p_department_id , I want to retrieve all employees located in this department in addition to other employees located in the child's nodes of this department id
I use oracle database 11g release 2
Please help me
Thanks
Edited by: ta**** on Apr 3, 2013 5:56 PM
Edited by: ta**** on Apr 3, 2013 5:58 PMSQL> variable p_department_id number
SQL> exec :p_department_id := null
PL/SQL procedure successfully completed.
SQL> with employees as (
2 select 101 id,1 dept_id,'King' empName from dual union all
3 select 102,2,'ALAN' from dual union all
4 select 103,2,'SAM' from dual union all
5 select 104,3,'JANE' from dual
6 ),
7 departments as (
8 select 1 id,null parent_dept,'General Manager office' deptname,'GM' deptType from dual union all
9 select 2,1,'Information tech.','DPT' from dual union all
10 select 3,2,'Software Development','SECTION' from dual
11 )
12 select *
13 from employees
14 where dept_id in (
15 select id
16 from departments
17 start with (
18 (
19 :p_department_id is null
20 and
21 parent_dept is null
22 )
23 or
24 id = :p_department_id
25 )
26 connect by parent_dept = prior id
27 )
28 /
ID DEPT_ID EMPN
101 1 King
102 2 ALAN
103 2 SAM
104 3 JANE
SQL> exec :p_department_id := 1
PL/SQL procedure successfully completed.
SQL> /
ID DEPT_ID EMPN
101 1 King
102 2 ALAN
103 2 SAM
104 3 JANE
SQL> exec :p_department_id := 2
PL/SQL procedure successfully completed.
SQL> /
ID DEPT_ID EMPN
102 2 ALAN
103 2 SAM
104 3 JANE
SQL> exec :p_department_id := 3
PL/SQL procedure successfully completed.
SQL> /
ID DEPT_ID EMPN
104 3 JANE
SQL> SY. -
Please help me on recursive function call
* The function which build the category tree
public String categoryTree(Statement stat, boolean isMore, int id) {
if(!isMore) {
return "";
else
String sql = " select t_category_relation.category_relation_id, t_category_relation.level_in, " +
" t_category_item.category_item_id, t_category_item.category_name_jpn_NV from " +
" t_category_item, t_category_relation " +
" where " +
" t_category_item.category_item_id = t_category_relation.category_item_id and " +
" t_category_relation.parent_id = " + id + " and t_category_relation.parent_id<>0";
// return sql;
try{
ResultSet res = stat.executeQuery(sql);
String spacer = "";
String input = "";
while(res.next()) {
int level = res.getInt(2);
id = res.getInt(1);
for(int i = 0; i < level; i ++) {
spacer +=" ";
input ="+ id: " +id + " NAME " + res.getString(4) + "\n</td>\n<td align=center>\n<input type=checkbox value=" +String.valueOf(id) + " name=categoryid>\n</td>\n</tr>\n";
return "\t\t<TR>\n\t\t\t<TD>" + spacer + input + categoryTree(stat, true, id);
if(spacer.equals("")){
return input+categoryTree(stat, false, id);
}catch(SQLException e) {
return "SQL Exception";
return categoryTree(stat, false, id);
} I am writing a recusive function which can generate a tree like category tree for customer navigation purpose.I don't know why my will loop only return once which means if category "vegetable" has two child and one of child has another child but the result will only display vegetable-->child-->grand child instead of vegetable-> 2 child -> one grand child of one of the child.Please help exam the codethax inDidn't I already answer this?
-
Recursion in java. please help
I am writing a program for tree traversing as follows. The program is relatively long but please just focus on 2 lines with errors indicated.
import java.io.*;
import myBinaryTree;
class myBinaryTreeTest{
static int vertexArray[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 3, 3, 7, 9, 11, 5, 11};
static myBinaryTree treeArray[] = new myBinaryTree[10];
static myBinaryTree tree;
static pTwoChildNode nodeParent, nodeLeft, nodeRight;
static treeNodeData dataParent, dataLeft, dataRight;
public static void main(String[] args) {
for (int j=0; j<10; j++) {
treeArray[j]=new myBinaryTree();
boolean treeArrayEmpty;
int treeArrayEmptyIndex;
int treeArrayChildIndex, treeArrayParentIndex;
int vertexCollapseChild, vertexCollapseParent;
for (int i=0; i<20; i=i+2) {
vertexCollapseChild=vertexArray;
vertexCollapseParent=vertexArray[i+1];
treeArrayEmptyIndex=-1;
treeArrayChildIndex=-1;
treeArrayParentIndex=-1;
for (int j=0; j<10; j++) {
if (treeArray[j].isEmpty()) {
if (treeArrayEmptyIndex == -1) {
treeArrayEmptyIndex=j;
else {
dataParent = (treeNodeData)treeArray[j].getData();
if (vertexCollapseChild==dataParent.vertex)
{treeArrayChildIndex=j;};
if (vertexCollapseParent==dataParent.vertex)
{treeArrayParentIndex=j;};
if (treeArrayChildIndex != -1 && treeArrayParentIndex != -1)
{break;}
updateTreeArray(treeArrayChildIndex, treeArrayParentIndex,
treeArrayEmptyIndex, vertexCollapseChild,
vertexCollapseParent);
for (int j=0; j<10; j++) {
System.out.println("\nIn-order:");
preOTrav(treeArray[j].getRoot());
static void updateTreeArray(int c, int p, int e, int cc, int cp) {
// c=treeArrayChildIndex
// p=treeArrayParentIndex
// e=treeArrayEmptyIndex
// cc=vertexCollapseChild
// cp=vertexCollapseParent
System.out.println(c+" "+p+" "+e+" "+cc+" "+cp);
if (c != -1) {
if (p != -1) {
dataParent = new treeNodeData();
dataRight = (treeNodeData)treeArray[p].getData();
dataParent.vertex=dataRight.vertex;
nodeParent=new pTwoChildNode(dataParent);
nodeParent.setLeft(treeArray[c].getRoot());
nodeParent.setRight(treeArray[p].getRoot());
treeArray[Math.min(c, p)].setRoot(nodeParent);
treeArray[Math.max(c, p)].setRoot(null);
else
dataParent = new treeNodeData();
dataParent.vertex=cp;
nodeParent=new pTwoChildNode(dataParent);
nodeParent.setLeft(treeArray[c].getRoot());
dataRight = new treeNodeData();
dataRight.vertex=cp;
nodeParent.setRight(new pTwoChildNode(dataRight));
treeArray[Math.min(c, e)].setRoot(nodeParent);
treeArray[Math.max(c, e)].setRoot(null);
else
if (p != -1) {
dataParent = new treeNodeData();
dataRight = (treeNodeData)treeArray[p].getData();
dataParent.vertex=dataRight.vertex;
nodeParent=new pTwoChildNode(dataParent);
dataLeft = new treeNodeData();
dataLeft.vertex=cc;
nodeParent.setLeft(new pTwoChildNode(dataLeft));
nodeParent.setRight(treeArray[p].getRoot());
treeArray[Math.min(p, e)].setRoot(nodeParent);
treeArray[Math.max(p, e)].setRoot(null);
else {
dataParent=new treeNodeData();
dataParent.vertex=cp;
nodeParent=new pTwoChildNode(dataParent);
dataRight=new treeNodeData();
dataRight.vertex=cp;
nodeRight=new pTwoChildNode(dataRight);
nodeParent.setRight(nodeRight);
dataLeft=new treeNodeData();
dataLeft.vertex=cc;
nodeLeft=new pTwoChildNode(dataLeft);
nodeParent.setLeft(nodeLeft);
treeArray[e].setRoot(nodeParent);
static void preOTrav(pTwoChildNode n) {
if (n == null)
return;
dataParent=(treeNodeData)n.getData();
System.out.print(dataParent.vertex+" ");
preOtrav(n.getLeft());
preOtrav(n.getRight());
//problems are here!!!!!
class treeNodeData {
int vertex;
// data element2 -> a set of vertex fan;
It doesn't compile but with the message saying that can not resolve the symbol in preOTrav(n.getLeft()); and preOTrav(n.getRight());
Please help!preOtrav(n.getLeft());
preOtrav(n.getRight());Don't write preOtrav when you mean preOTrav. Java is case-sensitive.
Jesper -
Parse into array using JDOM! please help
hey,
i've managed to parse an xml document using JDOM
i[b] need to be able to parse it and store the text (the value of each node) into an array, and then insert into db etc.
the problem is with the recursive function listChildren which calls itself... can someone tell me where do i insert the block of code such that i can store it into an array of string.
here's the code:
public static void parse(String stock) throws SQLException
SAXBuilder builder = new SAXBuilder();
Reader r = new StringReader(stock);
Document doc = builder.build(r);
Element root = doc.getRootElement();
listChildren(root, 0);
public static void listChildren(Element current, int depth) throws Exception
String nodes = current.getName();
System.out.println(nodes + " : " + current.getText());
List children = current.getChildren();
Iterator iterator = children.iterator();
while(iterator.hasNext())
Element child = (Element) iterator.next();
listChildren(child, depth+1);
i'm looking for something like:
a=current.getText();
but i donno where to include this line of code, please help
cheers,
Shivek Sachdevhi, I suggest you make an array of byte arrays
--> Byte[][] and use one row for each number
you can do 2 things,
take each cipher of one number and put one by one in each column of the row correspondent to that number. of course it may take too much room if the int[] is too big, but that is the easiest way I think
the other way is dividing your number into bitsets(class BitSet) with sizes of 8 bits and then you can save each bit into each column of your array. and you still have one number in each row. To put your numbers back use the same class.
Maybe someone has an easier way, I couldnt think of any. -
Statspack Problem(Please Help)
Hi,
I got the below error from Statspack report run. It runs after every one hour and the database version is 9.2.0.8. Please help how to resolve it.
ERROR: Database/Instance does not exist in STATS$DATABASE_INSTANCE
ERROR: Begin Snapshot Id specified does not exist for this database/instance
ERROR: End Snapshot Id specified does not exist for this database/instance
WARNING: timed_statitics setting changed between begin/end snaps: TIMINGS ARE IN
VALID
ERROR: Snapshots chosen span an instance shutdown: RESULTS ARE INVALID
ERROR: Session statistics are for different sessions: RESULTS NOT PRINTED
begin
ERROR at line 1:
ORA-20100: Missing Init.ora parameter db_block_size
ORA-06512: at "PERFSTAT.STATSPACK", line 727
ORA-06512: at "PERFSTAT.STATSPACK", line 1126
ORA-06512: at line 2
STATSPACK report for
DB Name DB Id Instance Inst Num Release Cluster Host
:ela := ;
ERROR at line 4:
ORA-06550: line 4, column 17:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
( - + case mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev sum variance
execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
The symbol "null" was substituted for ";" to continue.
ORA-06550: line 6, column 16:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
( - + case mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current exists max min prior sql stddev su
Cache Sizes (end)
~~~~~~~~~~~~~~~~
Buffer Cache: M Std Block Size: K
Shared Pool Size: M Log Buffer: K
Load Profile
~~~~~~~~~~~ Per Second Per Transaction
Redo size:
Logical reads:
Block changes:
Physical reads:
Physical writes:
User calls:
Parses:
Hard parses:
Sorts:
Logons:
Executes:
Transactions:
% Blocks changed per Read: Recursive Call %:
Rollback per transaction %: Rows per Sort:
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: Redo NoWait %:
Buffer Hit %: In-memory Sort %:
Library Hit %: Soft Parse %:
Execute to Parse %: Latch Hit %:
Parse CPU to Parse Elapsd %: % Non-Parse CPU:
SGA Memory Summary for DB: Instance: Snaps: 23410 -23412
SGA regions Size in Bytes
sum
End of Report
UNDO Usage
Free space in GB 29.52
USED space in GB 75.2
TEMP_TABLESPACE MB_TOTAL MB_USED MB_FREE
TEMP 208162 6 208156
WHS_CUBES_TEMP 33000 0 33000
WHS_VIEWER_TEMP 67688 0 67688
HP-UX eesci007 B.11.11 U 9000/800 08/18/10
04:00:44 %usr %sys %wio %idle
04:00:49 57 29 13 2
04:00:54 57 24 17 2
04:00:59 57 29 11 2
04:01:04 54 31 13 3
04:01:09 51 33 13 3
Average 55 29 14 2
procs memory page faults cpu
r b w avm free re at pi po fr de sr in sy cs us sy id
5 6user605926 wrote:
Hi,
I got the below error from Statspack report run. It runs after every one hour and the database version is 9.2.0.8. Please help how to resolve it.
ERROR: Database/Instance does not exist in STATS$DATABASE_INSTANCE
ERROR: Begin Snapshot Id specified does not exist for this database/instance
ERROR: End Snapshot Id specified does not exist for this database/instance
WARNING: timed_statitics setting changed between begin/end snaps: TIMINGS ARE IN
VALID
ERROR: Snapshots chosen span an instance shutdown: RESULTS ARE INVALID
ERROR: Session statistics are for different sessions: RESULTS NOT PRINTED
begin
ERROR at line 1:
ORA-20100: Missing Init.ora parameter db_block_size
ORA-06512: at "PERFSTAT.STATSPACK", line 727
ORA-06512: at "PERFSTAT.STATSPACK", line 1126
ORA-06512: at line 2
You might want to take a look at the docs: http://download.oracle.com/docs/cd/B10500_01/server.920/a96533/statspac.htm#21708
Note:
It is not correct to specify begin and end snapshots where the begin snapshot and end snapshot were taken from different instance startups. In other words, the instance must not have been shutdown between the times that the begin and end snapshots were taken.
At the first part of the report the database id is given. Do a select * from STATS$DATABASE_INSTANCE and verify that the DBID present matches the database/instance you are attempting to run the reprot upon. The report should be ran from the same instance in which the snapshots were taken. -
Please help with my helper class
Hi,
plz I need some assistance with this:
I have a big table which consist of 200 columns. This table gets fields from different tables. It has records of orders which may have several items and each item can have up to 8 taxes. So i have fields reaping for other order order records. I need to display an order then have a navigation to list items in details, with all its taxes, one by one.
Here is how I have decided to do it in a nutshell. I have decided to get all taxes of a particular item and put in a map with tax_codes as values and tax details arraylist as values. I then add this to an item with its other details. then I add items to a particular order. I have separated orders,items and taxes in their separate beans. Im trying to first the implimentation for each order, item and taxes by displaying them on a JSP. However am currently getting the following error with taxdetails:
java.lang.ClassCastException: OrderItems.ItemTax cannot be cast to java.lang.String
at OrderItems.OrderDetails.getItemTaxDetails(OrderDetails.java:166)
at OrderItems.Controller.processRequest(Controller.java:57)
at OrderItems.Controller.doGet(Controller.java:72)
I have a list of all itemTaxCodes am iterating and am casting to string...am not casting ItemTax object.Here is my code below:
OrderDetails.java
package orderitems;
import java.sql.*;
import java.util.*;
public class OrderDetails {
private LineOder lineOrder;
private Map lineItems;
//returns an item number, key_item, from its unique keys
public int getItemNumber(int key_item, String key_year,
String key_office,String key_client,String key_company){
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
int itmNum = 0;
* key_item a unique number for an item.
* key_year,key_office,key_client,key_company unique keys
* for each order where this key_item is taken
* from.
String select = "SELECT key_item FROM "+
Constants.WEB_TABLE +" WHERE key_item = " + key_item +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
if(rst.next()){
itmNum = Integer.parseInt(rst.getString("key_item"));
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return itmNum;
//get a list of item number(item codes)
public List getAllItemNumbers(String key_year,
String key_office,String key_client,String key_company){
List itemNumbers = new ArrayList();
LineItem itemNumber = null;
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
String select = "SELECT key_item FROM "+ Constants.WEB_TABLE +
" WHERE key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company + "'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
while(rst.next()){
itemNumber = new LineItem();
itemNumber.setKey_item(Integer.parseInt(rst.getString("key_item")));
itemNumbers.add(itemNumber);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return itemNumbers;
//get a list of tax codes
public List getAllTaxCodes(int key_item, String key_year,
String key_office,String key_client,String key_company){
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
ItemTax taxCode;
List taxCodes = new ArrayList();
int itemNum = getItemNumber(key_item, key_year,
key_office,key_client,key_company);
String select = "SELECT key_tax_code FROM "+
Constants.WEB_TABLE +" WHERE key_item = " + itemNum +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
while(rst.next()){
taxCode = new ItemTax();
taxCode.setKey_tax_code(rst.getString("key_tax_code"));
taxCodes.add(taxCode);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return taxCodes;
//use tax code to get tax details
public Map getItemTaxDetails(String key_year,String key_office,
String key_client,String key_company,int key_item){
ItemTax taxDetail = null;
List taxDetails = new ArrayList();
List itemTaxCodes = new ArrayList();
Map itemTaxdetails = new HashMap();
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
//get a list of all tax codes of an item with a
//given item number
itemTaxCodes = getAllTaxCodes(key_item,key_year,///a list of tax codes
key_office,key_client,key_company);
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
for(Iterator taxCodeIter= itemTaxCodes.iterator(); taxCodeIter.hasNext();){
String taxCode = (String)taxCodeIter.next();/////casting taxtCode to string***exception occurs from here
String select = "SELECT tax_type,tax_value," +
"tax_limit_val FROM "+ Constants.WEB_TABLE +
" WHERE key_item = "+ key_item +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'" +
" AND key_tax_code = '" + taxCode + "'";///tax code string
rst = stat.executeQuery(select);
while(rst.next()){
taxDetail = new ItemTax();
//records to be displayed only
taxDetail.setKey_item(Integer.parseInt(rst.getString("key_item")));
taxDetail.setTax_value(rst.getString("tax_value"));
taxDetail.setTax_limit_val(Float.parseFloat(rst.getString("tax_limit_val")));
//////other details records ommited//////////////////////////
taxDetails.add(taxDetail);
//a HashMap of all tax code as keys and list of details as values 4 each key
for(int i = 0;i<itemTaxCodes.size(); i++){
itemTaxdetails.put(itemTaxCodes.get(i),taxDetails.get(i));
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return itemTaxdetails;
//details of an item with all its taxes
public List getAllItemDetails(String key_year,
String key_office,String key_client,String key_company){
List lineItems = new ArrayList();
List itemNumbers = new ArrayList();
Map taxDetails = new HashMap();
LineItem item = null;
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
//A list of all item numbers in the declaration
itemNumbers = getAllItemNumbers(key_year,
key_office,key_client,key_company);
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
for(Iterator itemIter= itemNumbers.iterator(); itemIter.hasNext();){
int itemNumber = ((Integer)itemIter.next()).intValue();
String select = "SELECT item_description,item_mass," +
"item_cost" +
" FROM " + Constants.WEB_TABLE +
" WHERE key_year = '"+key_year+"'" +
" AND key_office = '"+key_office+ "'"+
" AND key_client = '"+key_client+ "'"+
" AND key_company = '"+key_company+ "'"+
" AND key_item = " + itemNumber;
rst = stat.executeQuery(select);
while(rst.next()){
item = new LineItem();
item.setItem_description(rst.getString("item_description"));
item.setItem_mass(Float.parseFloat(rst.getString("item_mass")));
item.setKey_item(Integer.parseInt(rst.getString("item_cost")));
//////other details records ommited//////////////////////////
//A HashMap of all itemTaxeCodes as its keys and an ArrayList of itemTaxedetails as its values
taxDetails = getItemTaxDetails(item.getKey_year(),item.getKey_office(),
item.getKey_client(),item.getKey_company(),item.getKey_item());
//item tax details
item.setItmTaxes(taxDetails);
//list of items with tax details
lineItems.add(item);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return lineItems;
public Set getDeclarations(String key_year,String key_cuo,
String key_dec,String key_nber){
List lineItems = new ArrayList();
Set lineOrders = new HashSet();
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
LineOder lineOrder = null;
String select = "SELECT * FROM " + Constants.WEB_TABLE +
" WHERE key_year = '" + key_year + "'" +
" AND key_cuo = '" + key_cuo + "'" +
" AND key_dec = '" + key_dec + "'" +
" AND key_nber = '" + key_nber + "'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
while(rst.next()){
lineOrder = new LineOder();
lineOrder.setKey_year(rst.getString("key_year"));
lineOrder.setKey_office(rst.getString("key_cuo"));
lineOrder.setKey_client(rst.getString("key_dec"));
lineOrder.setKey_company(rst.getString("key_nber"));
////list of items with all their details
lineItems = getAllItemDetails(lineOrder.getKey_year(),lineOrder.getKey_office(),
lineOrder.getKey_client(),lineOrder.getKey_company());
//setting item details
lineOrder.setItems(lineItems);
//a list of order with all details
lineOrders.add(lineOrder);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return lineOrders;
} and my testing servlet controller
Controller.java
package orderitems;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Controller extends HttpServlet {
private Map taxDetails = new HashMap();
//private List itemDetails = new ArrayList();
//private Set orderDetails = new HashSet();
private OrderDetails orderDetails = null;
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String key_year = "2007";
String key_office = "VZX00";
String key_company = "DG20";
String key_client = "ZI001";
int key_item = 1;
String nextView = "/taxdetails_list.jsp";
//String nextView = "/order_list.jsp";
//String nextView = "/items_list.jsp";
orderDetails = new OrderDetails();
taxDetails = orderDetails.getItemTaxDetails(key_year,key_office,
key_company,key_client,key_item);
//Store the collection objects into HTTP Request
request.setAttribute("taxDetails", taxDetails);
RequestDispatcher reqstDisp =
getServletContext().getRequestDispatcher(nextView);
reqstDisp.forward(request,response);
protected void doGet(HttpServletRequest request,
HttpServletResponse response)throws
ServletException, IOException {
processRequest(request, response);
protected void doPost(HttpServletRequest request,
HttpServletResponse response)throws
ServletException, IOException {
processRequest(request, response);
}I have not included code for beans to reduce on bulk.please help and with suggestions...
Thanx in advance.
Edited by: aiEx on Oct 3, 2007 8:13 AMaiEx wrote:
sometimes a tap on the head is needed to really learn and understand :-)You're casting them to the String type while they are of the ItemTax type and you've confirmed it yourself. Likely you misunderstood the concepts behind "casting" and you was expecting some magic that they are automatically converted somehow from the ItemTax type to the String type while the ItemTax class isn't a subclass of the String class :) -
Please Help::How to display a Map with LIsts as Keys and Values using JSTL
Hi,
I need some assistance on how to display a Map in JSP using struts or core JSTL. I have a HashMap which has a List of keys and each key maps to a value of an ArrayList.i.e I have an ArrayList of taxCodes and each taxCode maps to a value of taxDetails which is an ArrayList of details for for that particular taxCode. I have some trouble to display each taxCode then display taxDetails for each taxCode. Here is my code below:
OrderDetails.java
package orderitems;
import java.sql.*;
import java.util.*;
public class OrderDetails {
private LineOder lineOrder;
private Map lineItems;
//returns an item number, key_item, from its unique keys
public int getItemNumber(int key_item, String key_year,
String key_office,String key_client,String key_company){
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
int itmNum = 0;
* key_item a unique number for an item.
* key_year,key_office,key_client,key_company unique keys
* for each order where this key_item is taken
* from.
String select = "SELECT key_item FROM "+
Constants.WEB_TABLE +" WHERE key_item = " + key_item +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
if(rst.next()){
itmNum = Integer.parseInt(rst.getString("key_item"));
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return itmNum;
//get a list of item number(item codes)
public List getAllItemNumbers(String key_year,
String key_office,String key_client,String key_company){
List itemNumbers = new ArrayList();
LineItem itemNumber = null;
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
String select = "SELECT key_item FROM "+ Constants.WEB_TABLE +
" WHERE key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company + "'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
while(rst.next()){
itemNumber = new LineItem();
itemNumber.setKey_item(Integer.parseInt(rst.getString("key_item")));
itemNumbers.add(itemNumber);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return itemNumbers;
//get a list of tax codes
public List getAllTaxCodes(int key_item, String key_year,
String key_office,String key_client,String key_company){
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
ItemTax taxCode;
List taxCodes = new ArrayList();
int itemNum = getItemNumber(key_item, key_year,
key_office,key_client,key_company);
String select = "SELECT key_tax_code FROM "+
Constants.WEB_TABLE +" WHERE key_item = " + itemNum +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
while(rst.next()){
taxCode = new ItemTax();
taxCode.setKey_tax_code(rst.getString("key_tax_code"));
taxCodes.add(taxCode);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return taxCodes;
/////This methode returns a Map which am trying to display in JSP
//use tax code to get tax details
public Map getItemTaxDetails(String key_year,String key_office,
String key_client,String key_company,int key_item){
ItemTax taxDetail = null;
List taxDetails = new ArrayList();
List itemTaxCodes = new ArrayList();
Map itemTaxDetails = new HashMap();
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
//get a list of all tax codes of an item with a
//given item number
itemTaxCodes = getAllTaxCodes(key_item,key_year,
key_office,key_client,key_company);
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
for(Iterator taxCodeIter= itemTaxCodes.iterator(); taxCodeIter.hasNext();){
ItemTax itemTaxCode = (ItemTax)taxCodeIter.next();
String taxCode = itemTaxCode.getKey_tax_code();
String select = "SELECT tax_type,tax_value," +
"tax_limit_val FROM "+ Constants.WEB_TABLE +
" WHERE key_item = "+ key_item +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'" +
" AND key_tax_code = '" + taxCode + "'";
rst = stat.executeQuery(select);
while(rst.next()){
taxDetail = new ItemTax();
//records to be displayed only
taxDetail.setKey_item(Integer.parseInt(rst.getString("key_item")));
taxDetail.setTax_value(rst.getString("tax_value"));
taxDetail.setTax_limit_val(Float.parseFloat(rst.getString("tax_limit_val")));
//////other details records ommited//////////////////////////
taxDetails.add(taxDetail);////An ArrayList of taxDetails for each taxCode
* A HashMap which has all taxCodes of an item as its keys
* and an ArrayList of taxdetails as its values.
* I return this for display in a JSP.
itemTaxDetails.put(taxCode,taxDetails);
System.out.println();
System.out.println("*********CONSOLE OUTPUT*************");//display on console
Set set = itemTaxDetails.keySet();
Iterator iter = set.iterator();
System.out.println("Key\t\tValue\r\n");
while (iter.hasNext()) {
Object taxCode=iter.next();
Object details=itemTaxDetails.get(taxCode);
System.out.println(taxCode +"\t" + details);
System.out.println("************************************");
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return itemTaxDetails;
//details of an item with all its taxes
public List getAllItemDetails(String key_year,
String key_office,String key_client,String key_company){
List lineItems = new ArrayList();
List itemNumbers = new ArrayList();
Map taxDetails = new HashMap();
LineItem item = null;
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
//A list of all item numbers in the declaration
itemNumbers = getAllItemNumbers(key_year,
key_office,key_client,key_company);
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
for(Iterator itemIter= itemNumbers.iterator(); itemIter.hasNext();){
LineItem itemNum = (LineItem)itemIter.next();
int itemNumber = itemNum.getKey_item();
String select = "SELECT item_description,item_mass," +
"item_cost" +
" FROM " + Constants.WEB_TABLE +
" WHERE key_year = '"+key_year+"'" +
" AND key_office = '"+key_office+ "'"+
" AND key_client = '"+key_client+ "'"+
" AND key_company = '"+key_company+ "'"+
" AND key_item = " + itemNumber;
rst = stat.executeQuery(select);
while(rst.next()){
item = new LineItem();
item.setItem_description(rst.getString("item_description"));
item.setItem_mass(Float.parseFloat(rst.getString("item_mass")));
item.setKey_item(Integer.parseInt(rst.getString("item_cost")));
//////other details records ommited//////////////////////////
/* A HashMap of all itemTaxeCodes as its keys and an
* ArrayList of itemTaxedetails as its values
taxDetails = getItemTaxDetails(item.getKey_year(),item.getKey_office(),
item.getKey_client(),item.getKey_company(),item.getKey_item());
//item tax details
item.setItmTaxes(taxDetails);
//list of items with tax details
lineItems.add(item);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return lineItems;
public Set getOrders(String key_year,String key_office,
String key_client,String key_company){
List lineItems = new ArrayList();
Set lineOrders = new HashSet();
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
LineOder lineOrder = null;
String select = "SELECT * FROM " + Constants.WEB_TABLE +
" WHERE key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company + "'";
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
rst = stat.executeQuery(select);
while(rst.next()){
lineOrder = new LineOder();
lineOrder.setKey_year(rst.getString("key_year"));
lineOrder.setKey_office(rst.getString("key_office"));
lineOrder.setKey_client(rst.getString("key_client"));
lineOrder.setKey_company(rst.getString("key_company"));
////list of items with all their details
lineItems = getAllItemDetails(lineOrder.getKey_year(),lineOrder.getKey_office(),
lineOrder.getKey_client(),lineOrder.getKey_company());
//setting item details
lineOrder.setItems(lineItems);
//a list of order with all details
lineOrders.add(lineOrder);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
return lineOrders;
Controller.java
package orderitems;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Controller extends HttpServlet {
private Map taxDetails = new HashMap();
private OrderDetails orderDetails = null;
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String key_year = "2007";
String key_office = "VZX00";
String key_company = "DG20";
String key_client = "ZI001";
int key_item = 1;
String nextView = "/taxdetails_list.jsp";
orderDetails = new OrderDetails();
taxDetails = orderDetails.getItemTaxDetails(key_year,key_office,
key_company,key_client,key_item);
//Store the collection objects into HTTP Request
request.setAttribute("taxDetails", taxDetails);
RequestDispatcher reqstDisp =
getServletContext().getRequestDispatcher(nextView);
reqstDisp.forward(request,response);
protected void doGet(HttpServletRequest request,
HttpServletResponse response)throws
ServletException, IOException {
processRequest(request, response);
protected void doPost(HttpServletRequest request,
HttpServletResponse response)throws
ServletException, IOException {
processRequest(request, response);
taxdetails_list.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Simple Tax Detail Diaplay ::</title>
<link rel="stylesheet" type="text/css" href="imgs/orders.css"/>
</head>
<body>
<jsp:useBean id="taxDetails" class="java.util.HashMap" scope="request"/>
<table>
<c:forEach items="${taxDetails}" var="hMap">
<tr>
<td><c:out value="${hMap.key}" /></td>
<!--td><%--c:out value="${hMap.value}" /--%></td-->
</tr>
</c:forEach>
</table>
</body>
</html>am displaying taxCodes(in this case i have VAT and ICD) fine but cant figure out how to display a list of value for each taxCode.Here is the output am getting
both in my JSP and on the console:
*******************************CONSOLE OUTPUT****************************
Key Value
ICD [orderItems.ItemTax@13e6226, orderItems.ItemTax@9dca26]
VAT [orderItems.ItemTax@13e6226, orderItems.ItemTax@9dca26]
Edited by: aiEx on Oct 8, 2007 6:54 AMhi evnafets,
yes i need a nested for loop.I have tried your advice but my bean properties are not found.Am getting this error:
javax.servlet.ServletException: Unable to find a value for "key_item" in object of class "java.lang.String" using operator "."
I have tried this as stated earlier in the post:I have tried to make the method getItemTaxDetails return a List and get the returned list value as taxDetails. I then tested to display this list on JSP and its displaying fine.
public List getItemTaxDetails(String key_year,String key_office,
String key_client,String key_company,int key_item){
ItemTax taxDetail = null;
List taxDetails = new ArrayList();
List itemTaxCodes = new ArrayList();
Map itemTaxDetails = new HashMap();
Connection conn = null;
Statement stat = null;
ResultSet rst = null;
//get a list of all tax codes of an item with a
//given item number
itemTaxCodes = getAllTaxCodes(key_item,key_year,
key_office,key_client,key_company);
DbConnection dbConn = new DbConnection();
try {
conn = dbConn.getDbConnection(Constants.WEB_JNDI);
stat = conn.createStatement();
for(Iterator taxCodeIter= itemTaxCodes.iterator(); taxCodeIter.hasNext();){
ItemTax itemTaxCode = (ItemTax)taxCodeIter.next();
String taxCode = itemTaxCode.getKey_tax_code();
String select = "SELECT tax_type,tax_value," +
"tax_limit_val FROM "+ Constants.WEB_TABLE +
" WHERE key_item = "+ key_item +
" AND key_year = '" + key_year + "'" +
" AND key_office = '" + key_office + "'" +
" AND key_client = '" + key_client + "'" +
" AND key_company = '" + key_company +"'" +
" AND key_tax_code = '" + taxCode + "'";
rst = stat.executeQuery(select);
while(rst.next()){
taxDetail = new ItemTax();
//records to be displayed only
taxDetail.setKey_item(Integer.parseInt(rst.getString("key_item")));
taxDetail.setTax_value(rst.getString("tax_value"));
taxDetail.setTax_limit_val(Float.parseFloat(rst.getString("tax_limit_val")));
//////other details records ommited//////////////////////////
taxDetails.add(taxDetail);////An ArrayList of taxDetails for each taxCode
* A HashMap which has all taxCodes of an item as its keys
* and an ArrayList of taxdetails as its values.
* I return this for display in a JSP.
itemTaxDetails.put(taxCode,taxDetails);
} catch (SQLException ex) {
ex.printStackTrace();
} finally{
SQLHelper.cleanUp(rst, stat, conn);
//return itemTaxDetails;
return taxDetails;
}And my JSP
taxdetails_list.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="imgs/orders.css"/>
</head>
<body>
<table>
<c:forEach var="curRecord" items="${taxDetails}" varStatus="rowCounter">
<c:choose>
<c:when test="${rowCounter.count % 2 == 0}">
<c:set var="rowStyle" scope="page" value="odd" />
</c:when>
<c:otherwise>
<c:set var="rowStyle" scope="page" value="even" />
</c:otherwise>
</c:choose>
<tr class="${rowStyle}">
<td>${curRecord.key_item}</td>
<td>${curRecord.tax_value}</td>
<td>${curRecord.tax_limit_val}</td>
</tr>
</c:forEach>
</table>
</body>
</html>I can't see where am going wrong even with your advice.Please help.
Thnx. -
Can someone please help me with a java assignment
Hey all,
I have a favor to ask I have a program that I need for my java class, I have the just of it but I can't figure out the rest, can anybody please help me here is the directions:
Let's revisit fibonacci numbers, looking at it as a process involving iteration and arrays. Create an array fib[] of 101 elements. Make fib[0] = 0 and fib[1] = 1. Then, in an iterative process going from 2 to 100, compute fib[k]. These numbers get quite large; make it an array of double.
Then, let the user select a number (such as 7) and have the application display the corresponding finbonacci number (in this case 13). Do this as often as the user wants. If a number larger than 100 is provided, display an error message, but don't terminate the program.
Here is what I have so far: Please add on and feel free to return to me please, thank you:
// This is an application that transforms numbers into their Fibonacci number
import javax.swing.*;
public class Fibonacci {
public static void main( String args[] ){
int k; //simple counter
int numSize; // how many numbers were entered
int theNum; // the number entered by the user
String response; //response of the user
// define the array
double fib[] = new double[ 101 ];
// read in the numbers into an array
k = 0;
response = JOptionPane.showInputDialog( "Enter the first number" );
theNum = Integer.parseInt( response );
while (theNum > 0){
if (theNum > 100)
k++;
fib [ 1 ] = 1;
fib [ 2 ] = 1;
response = JOptionPane.showInputDialog( "Enter the next number, negative to end" );
theNum = Integer.parseInt( response );
} // end while
numSize = k;
// terminate
System.exit( 0 );
}// end main
} //end class FibonacciTry this program..Hope it helps
import javax.swing.*;
public class Fibonacci
static double fib[];
public Fibonacci()
fib = new double[ 101 ];
fib[0] = 0;
fib[1] = 1;
for(int i = 2; i < fib.length; i++)
fib[i] = fib[i -1] + fib[i - 2];
public static void main( String args[] )
boolean end = true;
String response = "";
int theNum = 0;
new Fibonacci();
while(end)
response = JOptionPane.showInputDialog( "Enter the number. 999 to end" );
try
theNum = Integer.parseInt( response );
if(theNum == 999)
end = false;
else if(theNum <101)
String Message = "The Fibonacci number at "+ theNum + " is : "+ fib[theNum - 1];
JOptionPane.showMessageDialog(null, Message, "Fibonacci Number", JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null, "Input should be less than 100", "Error", JOptionPane.ERROR_MESSAGE);
catch(NumberFormatException ex)
JOptionPane.showMessageDialog(null, "Enter Numeric values", "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}// end main
} //end class FibonacciVish -
Please help me with the homework given to me by my teacher
hello,i am new in java programming please help me with the home work given to me by my teacher at school, help me to build an interface that can work with this code.i can build an interface but i dont just understand this code.
//references:
//http://forums.techguy.org/development/570048-need-write-java-program-convert.html
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
public class Translate
public static void main(String [] args) throws IOException
if (args.length != 2)
System.err.println("usage: Translate wordmapfile textfile");
System.exit(1);
try
HashMap words = ReadHashMapFromFile(args[0]);
System.out.println(ProcessFile(words, args[1]));
catch (Exception e)
e.printStackTrace();
// static helper methods
* Reads a file into a HashMap. The file should contain lines of the format
* "key\tvalue\n"
* @returns a hashmap of the given file
@SuppressWarnings("unchecked")
private static HashMap ReadHashMapFromFile(String filename) throws FileNotFoundException, IOException
BufferedReader in = null;
HashMap map = null;
try
in = new BufferedReader(new FileReader(filename));
String line;
map = new HashMap();
while ((line = in.readLine()) != null)
String[] fields = line.split("\\t", 2);
if (fields.length != 2) continue; //just ignore "invalid" lines
map.put(fields[0], fields[1]);
finally
if(in!=null) in.close(); //may throw IOException
return(map); //returning a reference to local variable is safe in java (unlike C/C++)
* Process the given file
* @returns String contains the whole file.
private static String ProcessFile(Map words, String filename) throws FileNotFoundException, IOException {
BufferedReader in = null;
StringBuffer out = null;
try {
in = new BufferedReader(new FileReader(filename));
out = new StringBuffer();
String line = null;
while( (line=in.readLine()) != null ) {
out.append(SearchAndReplaceWordsInText(words, line)+"\n");
} finally {
if(in!=null) in.close(); //may throw IOException
return out.toString();
* Replaces all occurrences in text of each key in words with it's value.
* @returns String
private static String SearchAndReplaceWordsInText(Map words, String text) {
Iterator it = words.keySet().iterator();
while( it.hasNext() ) {
String key = (String)it.next();
text = text.replaceAll("\\b"+key+"\\b", (String)words.get(key));
return text;
* @returns: s with the first letter capitalized
String capitalize(String s)
return s.substring(0,0).toUpperCase() + s.substring(1);
}... here's the head of my pirate_words_map.txt
hello ahoy
hi yo-ho-ho
pardon me avast
excuse me arrr
yes aye
my me
friend me bucko
sir matey
madam proud beauty
miss comely wench
stranger scurvy dog
officer foul blaggart
where whar
is be
are be
am be
the th'
you ye
your yer
tell be tellin'Heres your answer. Run it in on your pc.
public class Annoy
public static void main(String[] args)
System.out.println("I am a triple poster.");
System.out.println("I can not understand why I can not understand the help I have receved to date on the java forums.");
} -
I can't open a Final Cut Pro 6 file in Final Cut Pro 10. Please help!
I am a long time user of Final Cut Pro 6. I finished a video for a client but my computer was giving me issues because it's older and needs cleaned off so it is slow and it's affecting the video. I downloaded Final Cut Pro 10 trial on my laptop and tried opening the file in Final Cut Pro 10. No go. I thought that it would open because usually it isn't a problem when trying to open older files in newer programs. I understand, however, that Final Cut Pro 10 has been re-writted so it presents a problem. Can anyone please help me with this?
ThanksRuss has answered your question.
What follows constitutes bully pulpitism.
Apple has a long history of abandoning legacy software and hardware. I would be VERY careful before I bought into the the next iteration of Apple software. The real conundrum is Adobe seems bent on extracting blood from stones with its new subscription model so it becomes a choice of lessor evils. Do you pick "the next great thing" (whatever that means) from a company that you know will cut you off at the kness or do you pick something that has a high degree of stability but will bleed you over the long run?
Not an easy choice.
x -
I have created a try-catch statement, I have also created a home made Invalid value exception class. I have also thrown the InvalidValueException in a calculate method in a seperate class. I am getting the error of unreachable catch block. Here is my code for this process. Please Help
private void runPayroll(List employees)
Collections.sort(employees, new PersonComparator());
// place the following code in a try-catch statement to check for the following errors
//- InvalidValue (the pay units must be a decimal number > 0)
try
double payRate = jtfPayRate.getText();
catch (InvalidValueException ivEx)//THIS IS WHERE I AM GETTING MY ERROR
JOptionPane.showMessageDialog(this, "the pay units must be a decimal number > 0", "Error Message", JOptionPane.ERROR_MESSAGE);
return;
// loop through all of the employees in the collection
Iterator iterator = employees.iterator();
StringBuffer output = new StringBuffer("");
while (iterator.hasNext())
Employee employee = (Employee)iterator.next();
output.append( employee.toString() + "\n" );
//InvalidValueException class
public class InvalidValueException extends Exception
public InvalidValueException(double payUnit)
//super(payUnit);
public String getLocalizedMessage()
return "Amount must be > 0";
//PayCheck class this is where I throw the exception
public abstract double calculate(double payUnit, double payRate)
throws InvalidValueException;That catch block is never reached because
double payRate = jtfPayRate.getText();will never throw an InvalidValueException (it doesn't even know about it). I assume jtfPayRate is a textfield? If so, I am suprised the compiler doesn't give you an incompatible types error first, since you are trying to put a string into a double value with the above statement.
I think what you are trying to do is this:
try {
double payRate = Double.parseDouble(jtfPayRate.getText());
catch(NumberFormatException ex) {
throw new InvalidValueException(...);
}You may want to pass an error message string to your self made exception, by the way, and call super(message) in the constructor of it. -
Group values on Barchart - Please help Urgent
Hi
I am plotting a bar chart.
I am plotting chart "on change of" first group name.and showing 3 values which i get in formulas.
I had to place these formulas in lowest level of subgroup just above the details ( i don`t need any details).
i am getting all the values properly.
But it is plotting the graph with group A values as group B values.
In other words,
on starting group all the 3 values will be zeros.By the end of this group (after details) i will get 3 values.
I want to plot chart with these values as starting group values.
But as took "on change of" group name it is plotting zeros initially and the result of group A as the result of Group B and so on.
Please help me how can i plot chart after a group is evaluated.
I placed my chart in report header
Please help me .
Haima.Hi
I am using bar Chart ( side by side bar chart).
This time i would like to explain in more detailed.Please find my layout and preview as pictures in the following links.
[http://i34.tinypic.com/2wc48w9.jpg]
[http://i33.tinypic.com/2603ern.jpg]
I want show msx3 in the bar chart .so first i initialized it to zero and counted all the records which suits my criteria and showing the same value in the bar against that group.( i am explaining with one formula msx3 only..anyway remaining are similar).
This value is initially zero and will give a count number at the end of this Group #1 Name ( plz see pictures).
My problem is i have take "On change of" Group# 1 Name in the data of chart expert and showing the formulas ( with don`t Summarize option checked).
It is giving me the result properly but plotting the values of first iteration ( when the first time the group is evaluated) ans result of second iteration.I understand this is because of "on change of " option ,when it is plotting all the values will be zeros.
I have to plot the chart with values after evaluating the group #1 but not before evaluating it.
Please give me any idea over it.I am not an expert and it is urgent.
Please help.
Thanks,
Haima
Maybe you are looking for
-
Many features have disappeared. There is no back button to go to the previous page. There is no "most frequently visited" icon on the toolbar. I am not asked if I want to save all my tabs when I close firefox. There is no recently bookmarked tab on t
-
Problem with add records by matrix in UDO
Hi, I'm set DataBind for my columns using DBDataSource. But loading data in matrix by DataTable through method ExecuteQuery. After this I'm dont to save data in my child table. Somebody can I help me?
-
Now that Apple no longer supports AppleWorks, how can I change a lot of AppleWorks files to Pages, without doing them one at at time?
-
Photosmart B010a All In One test print O: K: Does not print from the computer
Egr: Sig. No error message in the control panel is READY, has printed the test. DO NOT print from your computer. HP Computer in 6220 with window 7/64 bit. = tiscali WI Fi network. the printer is connected with the cable to the computer. I also tried
-
How do I cancel my subscription and Receive a full refund?
I want to cancel and I need a refund.