我有两个变量,两个双向量。我想像这样用 Unicode 打印:
"1¹.¹¹¹¹"
(指数将是双倍),但我不知道到底该怎么做。
package Math;
import java.util.Scanner;
public Class Exponent() {
double[][] num;
double[][] Exp1;
double[][] Exp2;
Scanner key = new Scanner(System.in);
num = new double[3][3];
Exp1 = new double[3][3];
Exp2 = new double[3][3];
for (int f = 0; f < num.length; f++) {
for (int c = 0; c < num.length; c++) {
num[f][c] = key.nextDouble();
Exp1[f][c] = key.nextDouble();
Exp2[f][c] = key.nextDouble();
}
}
}
我有一种将双精度数转换为 Unicode 的方法,但我不确定如何将其应用于向量。显然,我需要一个向量循环,但我不确定在哪里。
public static String DbltoUni(double[][] Exp1, double[][] Exp2) {
char[] unicode = {'\u2070', '\u00B9', '\u00B2', '\u00B2', '\u2074',
'\u2075', '\u2076', '\u2077', '\u2078', '\u2079'};
String numStr1 = Double.toString(Exp1[][]);
String numStr2 = Double.toString(Exp2[][]);
StringBuilder Str = new StringBuilder();
for (char digit : numberStr.toCharArray()) {
double digitVal = Character.getNumericValue(digit);
Str.append(unicode[digitVal]);
}
return Str.toString();
}
或多或少,我理解这个方法,但是我必须针对双向量修复它。
您的
DbltoUni()
函数转换单个 Double
,因此它应该采用单个 Double
作为输入。
此外,您的
unicode
数组中有 '\u00B2'
两次。 第二个需要改为 '\u00B3'。
此外,
Character.getNumericValue()
返回int
,而不是double
。
尝试更多类似这样的事情:
public static String DbltoUni(double value) {
char[] unicode = {'\u2070', '\u00B9', '\u00B2', '\u00B3', '\u2074',
'\u2075', '\u2076', '\u2077', '\u2078', '\u2079'};
String numStr = Double.toString(value);
StringBuilder bldr = new StringBuilder();
for (char ch : numStr.toCharArray()) {
if (Character.isDigit(ch)) {
int digitVal = Character.getNumericValue(digit);
if (digitVal >= 0 && digitVal <= 9) {
bldr.append(unicode[digitVal]);
continue;
}
}
bldr.append(ch);
}
return bldr.toString();
}
现在,您可以循环遍历向量,转换每个
Double
并根据需要使用输出,例如:
for (int f = 0; f < num.length; f++) {
for (int c = 0; c < num.length; c++) {
String str = DbltoUni(num[f][c]);
...
}
}