[Home] Restricted access for guests. The link to Java source code is disabled
Java source code of 'jhplot.math.io.ArrayString'
package jhplot.math.io;
import java.util.*;
/**
* BSD License
*
* @author Yann RICHET
*/
public class ArrayString {
// private static int decimalSize = 10;
private static String defaultWordDelimiter = " ";
private static String defaultSentenceDelimiter = "\n";
public static String printDoubleArray(double[][] m) {
return printDoubleArray(m, defaultWordDelimiter, defaultSentenceDelimiter);
}
public static String printDoubleArray(double[] m) {
return printDoubleArray(new double[][] { m });
}
public static String printIntArray(int[][] m) {
return printIntArray(m, defaultWordDelimiter, defaultSentenceDelimiter);
}
public static String printIntArray(int[] m) {
return printIntArray(new int[][] { m });
}
public static String printDoubleArray(double[][] m, String wordDelimiter,
String sentenceDelimiter) {
StringBuffer str = new StringBuffer(25 * m.length * m[0].length);
// //can't use format because of infinty which become "?" strings...
// DecimalFormat format = new DecimalFormat();
// format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.US));
// format.setMinimumIntegerDigits(1);
// format.setMaximumFractionDigits(decimalSize);
// format.setMinimumFractionDigits(decimalSize);
// format.setGroupingUsed(false);
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
// String s = format.format(m[i][j]); // format the number
str = str.append(wordDelimiter);
// str = str.append(s);
str = str.append(Double.toString(m[i][j]));
}
if (i < m.length - 1) {
str = str.append(sentenceDelimiter);
}
}
return str.toString();
}
public static String printIntArray(int[][] m, String wordDelimiter,
String sentenceDelimiter) {
StringBuffer str = new StringBuffer(25 * m.length * m[0].length);
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
str = str.append(wordDelimiter);
str = str.append(m[i][j]);
}
if (i < m.length - 1) {
str = str.append(sentenceDelimiter);
}
}
return str.toString();
}
public static double[][] readStringDouble(String s) {
return readStringDouble(s, defaultWordDelimiter,
defaultSentenceDelimiter);
}
public static double[] readString1DDouble(String s) {
return readString1DDouble(s, defaultWordDelimiter,
defaultSentenceDelimiter);
}
public static double[] readString1DDouble(String s, String wordDelimiter,
String sentenceDelimiter) {
double[][] d = readStringDouble(s, wordDelimiter, sentenceDelimiter);
double[] d1D = null;
if (d.length > 1) {
d1D = new double[d.length];
for (int i = 0; i < d1D.length; i++)
d1D[i] = d[i][0];
} else
d1D = d[0];
return d1D;
}
public static double[][] readStringDouble(String s, String wordDelimiter,
String sentenceDelimiter) {
double[][] array;
String delimiterString = wordDelimiter;
String newlineString = sentenceDelimiter;
StringTokenizer linesTokenizer = new StringTokenizer(s, newlineString);
StringTokenizer wordsTokenizer;
Vector lines = new Vector();
String line;
int linereadFailed = 0;
do {
Vector words = new Vector();
line = linesTokenizer.nextToken();
wordsTokenizer = new StringTokenizer(line, delimiterString);
int readFailed = 0;
do {
try {
words
.addElement(Double.valueOf(wordsTokenizer
.nextToken()));
} catch (NumberFormatException ex) {
readFailed++;
}
} while (wordsTokenizer.hasMoreElements());
if (readFailed == 0) {
double[] line_i = new double[words.size()];
// words.copyInto(line_i);
for (int i = 0; i < line_i.length; i++) {
line_i[i] = ((Double) words.get(i)).doubleValue();
}
lines.add(line_i);
} else {
linereadFailed++;
}
} while (linesTokenizer.hasMoreElements());
if (linereadFailed != 0) {
System.out.println("warning : " + linereadFailed
+ " lines ignored!");
}
/*
* do { Vector words = new Vector(); wordsTokenizer = new
* StringTokenizer(linesTokenizer.nextToken(), delimiterString); do {
* words.addElement(Double.valueOf(wordsTokenizer.nextToken())); } while
* (wordsTokenizer.hasMoreElements()); double[] line_i = new
* double[words.size()]; //words.copyInto(line_i); for (int i = 0; i <
* line_i.length; i++) { line_i[i] = ( (Double)
* words.get(i)).doubleValue(); } lines.add(line_i); } while
* (linesTokenizer.hasMoreElements());
*/
array = new double[lines.size()][];
lines.copyInto(array);
return array;
}
public static int[][] readStringInt(String s) {
return readStringInt(s, defaultWordDelimiter,
defaultSentenceDelimiter);
}
public static int[] readString1DInt(String s) {
return readString1DInt(s, defaultWordDelimiter,
defaultSentenceDelimiter);
}
public static int[] readString1DInt(String s, String wordDelimiter,
String sentenceDelimiter) {
int[][] d = readStringInt(s, wordDelimiter, sentenceDelimiter);
int[] d1D = null;
if (d.length > 1) {
d1D = new int[d.length];
for (int i = 0; i < d1D.length; i++)
d1D[i] = d[i][0];
} else
d1D = d[0];
return d1D;
}
public static int[][] readStringInt(String s, String wordDelimiter,
String sentenceDelimiter) {
int[][] array;
String delimiterString = wordDelimiter;
String newlineString = sentenceDelimiter;
StringTokenizer linesTokenizer = new StringTokenizer(s, newlineString);
StringTokenizer wordsTokenizer;
Vector lines = new Vector();
int linereadFailed = 0;
do {
Vector words = new Vector();
wordsTokenizer = new StringTokenizer(linesTokenizer.nextToken(),
delimiterString);
int readFailed = 0;
do {
try {
words.addElement(Integer
.valueOf(wordsTokenizer.nextToken()));
} catch (NumberFormatException ex) {
readFailed++;
}
} while (wordsTokenizer.hasMoreElements());
if (readFailed == 0) {
int[] line_i = new int[words.size()];
// words.copyInto(line_i);
for (int i = 0; i < line_i.length; i++) {
line_i[i] = ((Integer) words.get(i)).intValue();
}
lines.add(line_i);
} else {
linereadFailed++;
}
} while (linesTokenizer.hasMoreElements());
if (linereadFailed != 0) {
System.out.println("warning : " + linereadFailed
+ " lines ignored!");
}
/*
* do { Vector words = new Vector(); wordsTokenizer = new
* StringTokenizer(linesTokenizer.nextToken(), delimiterString); do {
* words.addElement(Double.valueOf(wordsTokenizer.nextToken())); } while
* (wordsTokenizer.hasMoreElements()); double[] line_i = new
* double[words.size()]; //words.copyInto(line_i); for (int i = 0; i <
* line_i.length; i++) { line_i[i] = ( (Double)
* words.get(i)).doubleValue(); } lines.add(line_i); } while
* (linesTokenizer.hasMoreElements());
*/
array = new int[lines.size()][];
lines.copyInto(array);
return array;
}
}