在Java中,是否可以像这样打印双精度数:“¹”而不是“^1”?

问题描述 投票:0回答:1

我有两个变量,两个双向量。我想像这样用 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();
}

或多或少,我理解这个方法,但是我必须针对双向量修复它。

vector unicode printing type-conversion double
1个回答
0
投票

您的

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]);
        ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.