当我尝试使用Java 8和maven 3.2.3在新机器中编译已经编译的代码时,我遇到了很多错误。示例如下,
/Users/lginnali/masters/independent-study-01/siddhi/modules/siddhi-extensions/siddhi-classifiers/src/main/java/org/wso2/siddhi/classifiers/trees/ht/Statistics.java: 176:错误:格式错误的HTML [错误] *对于小参数0< y< exp(-2),程序计算 [错误] ^
我的代码如下所示(它抱怨我的注释行。)
/**
* Returns the value, <tt>x</tt>, for which the area under the Normal
* (Gaussian) probability density function (integrated from minus infinity to
* <tt>x</tt>) is equal to the argument <tt>y</tt> (assumes mean is zero,
* variance is one).
* <p>
* For small arguments <tt>0 < y < exp(-2)</tt>, the program computes
* <tt>z = sqrt( -2.0 * log(y) )</tt>; then the approximation is
* <tt>x = z - log(z)/z - (1/z) P(1/z) / Q(1/z)</tt>. There are two rational
* functions P/Q, one for <tt>0 < y < exp(-32)</tt> and the other for
* <tt>y</tt> up to <tt>exp(-2)</tt>. For larger arguments,
* <tt>w = y - 0.5</tt>, and <tt>x/sqrt(2pi) = w + w**3 R(w**2)/S(w**2))</tt>.
*
* @param y0 the area under the normal pdf
* @return the z-value
*/
public static double normalInverse(double y0) {
double x, y, z, y2, x0, x1;
int code;
final double s2pi = Math.sqrt(2.0 * Math.PI);
if (y0 <= 0.0) {
throw new IllegalArgumentException();
}
if (y0 >= 1.0) {
throw new IllegalArgumentException();
}
code = 1;
y = y0;
if (y > (1.0 - 0.13533528323661269189)) { /* 0.135... = exp(-2) */
y = 1.0 - y;
code = 0;
}
if (y > 0.13533528323661269189) {
y = y - 0.5;
y2 = y * y;
x = y + y * (y2 * polevl(y2, P0, 4) / p1evl(y2, Q0, 8));
x = x * s2pi;
return (x);
}
x = Math.sqrt(-2.0 * Math.log(y));
x0 = x - Math.log(x) / x;
z = 1.0 / x;
if (x < 8.0) {
x1 = z * polevl(z, P1, 8) / p1evl(z, Q1, 8);
} else {
x1 = z * polevl(z, P2, 8) / p1evl(z, Q2, 8);
}
x = x0 - x1;
if (code != 0) {
x = -x;
}
return (x);
}
有人可以帮我解决这个问题吗?我应该修复我的代码还是与Java 8有关。
由于
我切换回Java 7,它工作正常。我不确定我是否应该更改所有注释以使其使用Java 8进行编译,或者我可以调整一些Java选项来进行编译,但我认为这是一个坏主意。我可能会修复它以使用Java 8编译,但我想知道Java 8中的动机(尝试解析我的注释并在编译期间给出错误)。
答案 0 :(得分:3)
问题是您的HTML评论包含行0 < y < exp(-2)
小于符号<
也是HTML标记的开头,因此Javadoc认为您正在尝试制作另一个HTML标记。
如果您使用<
替换小号,那么它应该可以正常工作
0 < y < exp(-2)
可替换地,
您可以使用{@code }
javadoc标记来包装方程而不是<tt>
。代码标签知道不要将内容呈现为HTML
{@code 0 < y < exp(-2)}