NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
I copied/tweaked some VisAD code for reading/parsing input files. The boiled down code and input files (included) run fine on my SGI (running their latest jdk), but give me a java.lang.NumberFormatException on my NT box (with "Java 2"). See outputs at very end. Write once, run anywhere? Any suggestions? --Randy //----------------------------------------------- // readTest.java import java.rmi.RemoteException; import java.io.*; public class readTest extends Object { static int var1 = 0; public static void main(String args[]) throws IOException, RemoteException { int nverts = 4; float vtx[][] = new float[nverts][3]; System.out.println("nverts = "+nverts+"\n"); // Define input stream - vertices file InputStreamReader inStr = new InputStreamReader(new FileInputStream("verts.dat")); // Define temporary integer array int[] ints = new int[80]; // convert array of integers to array of characters int l = 0; System.out.println("Reading verts...\n"); char[] chars; for (int c=0; c<nverts; c++) { int idx = -1; for (int d=0; d<4; d++) { // idx,x,y,z l = 0; try { ints[0] = inStr.read(); } catch (Exception e) { System.out.println("test: "+e); } while ( (ints[l] != 32) && (ints[l] != 10) ) { try { ints[++l] = inStr.read(); } catch (Exception e) { System.out.println("test: "+e); } } chars = new char[l]; for (int i=0; i<l; i++) { chars[i] = (char) ints[i]; } if (d==0) idx = (Integer.valueOf(new String(chars))).intValue(); // idx = (Long.valueOf(new String(chars))).longValue(); else vtx[c][d-1] = (Float.valueOf(new String(chars))).floatValue(); } if ((c < 10) || (c > (nverts-10))) System.out.println(idx+"="+vtx[c][0]+","+vtx[c][1]+","+vtx[c][2]); } // do EOF stuff try { inStr.close(); } catch (Exception e) { System.out.println("readTest: "+e); } //--------------------------------------------------------- int ncells = 1; int hex[][] = new int[ncells][8]; System.out.println("ncells = "+ncells+"\n"); // Define input stream - cells file inStr = new InputStreamReader(new FileInputStream("cells.dat")); System.out.println("Reading hex cells...\n"); for (int c=0; c<ncells; c++) { int idx = -1; for (int d=0; d<9; d++) { // idx,v1,v2,...,v8 l = 0; try { ints[0] = inStr.read(); System.out.println("[0]="+ints[0]); } catch (Exception e) { System.out.println("test: "+e); } while ( (ints[l] != 32) && (ints[l] != 10) ) { try { ints[++l] = inStr.read(); System.out.println(ints[l]); } catch (Exception e) { System.out.println("test: "+e); } } chars = new char[l]; for (int i=0; i<l; i++) { chars[i] = (char) ints[i]; } if (d==0) { idx = (Integer.valueOf(new String(chars))).intValue(); System.out.println("idx= "+idx); } else { hex[c][d-1] = (Integer.valueOf(new String(chars))).intValue(); System.out.println("hex["+c+"]["+(d-1)+"]= "+hex[c][d-1]); } } if ((c < 10) || (c > (ncells-10))) System.out.println(idx+"="+hex[c][0]+","+hex[c][1]+","+hex[c][2]+","+hex[c][3]+","+hex[c][4]+","+hex[c][5]+","+hex[c][6]+","+hex[c][7]); } // do EOF stuff try { inStr.close(); } catch (Exception e) { System.out.println("readTest: "+e); } } } ---------- verts.dat -------- 1 0.0 0.0 0.0 2 1.0 0.0 0.0 3 1.0 1.0 0.0 4 0.0 1.0 0.0 ---------- cells.dat --------- 1 1 2 3 4 5 6 7 8 -----> tail of output on SGI hex[0][5]= 6 [0]=55 32 hex[0][6]= 7 [0]=56 10 hex[0][7]= 8 1=1,2,3,4,5,6,7,8 -----> on NT hex[0][5]= 6 [0]=55 32 hex[0][6]= 7 [0]=56 13 10 Exception in ...
visad
archives: