一些消息已被简化;使用 -Xdiags:verbose 重新编译以获得完整输出?
Some messages have been simplified; recompile with -Xdiags:verbose to get full output?
所以我正在编写一个选择排序算法,将排序的所有部分都转换为方法。但是,当我编译它时,它 returns 错误:
注意:一些消息已被简化;使用 -Xdiags:verbose 重新编译以获得完整输出
我做错了什么?
import java.io.*;
public class Driver01
{
public static void main(String[] args)
{
//input
double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 1.0, 6.2};
//sort the array
double[] sorted = process(myArray);
//output
System.out.print("" + sorted);
}
private static double findMax( int EndIndex, double[] enterArray) {
double max = 0;
int trueIndex = 0;
for( int x = 0; x < EndIndex; x++) {
if(enterArray[x] > max) {
max = enterArray[x];
trueIndex = x;
}
}
return trueIndex;
}
private static void swap(int swap1, int swap2, double[] enterArray) {
double temp = 0;
temp = enterArray[swap1];
enterArray[swap1] = enterArray[swap2];
enterArray[swap2] = enterArray[swap1];
}
private static double[] process(double[] enterArray) {
int range = enterArray.length -1;
for( int x = 0; x < enterArray.length-1; x++) {
double j = findMax(range, enterArray);
swap(j, range, enterArray);
range = range -1;
}
return enterArray;
}
}
修改后的代码:
import java.io.*;
public class Driver01
{
public static void main(String[] args)
{
//input
double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 1.0, 6.2};
//sort the array
double[] sorted = process(myArray);
//output
System.out.print("" + sorted);
}
private static int findMax( int EndIndex, double[] enterArray) {
double max = 0;
int trueIndex = 0;
for( int x = 0; x < EndIndex; x++) {
if(enterArray[x] > max) {
max = enterArray[x];
trueIndex = x;
}
}
return trueIndex;
}
private static void swap(int swap1, int swap2, double[] enterArray) {
double temp = 0;
temp = enterArray[swap1];
enterArray[swap1] = enterArray[swap2];
enterArray[swap2] = enterArray[swap1];
}
private static double[] process(double[] enterArray) {
int range = enterArray.length -1;
for( int x = 0; x < enterArray.length-1; x++) {
int j = findMax(range, enterArray);
swap(j, range, enterArray);
range = range -1;
}
return enterArray;
}
}
现在代码正在打印一个如下所示的数组:[D@15db9742
现在怎么了?
完整的错误信息是:
Driver01.java:41: error: incompatible types: possible lossy conversion
from double to int
swap(j, range, enterArray);
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose
to get full output
1 error
由此可见,您在调用 swap
时使用了 double
参数,而它期待的是 int
参数。
现在我不打算提出解决方案,但我会建议您仔细查看 findMax
正在做什么以及正在做什么 returning。特别是return类型!
(这里的部分问题是 findMax
变量的名称具有误导性。该方法并没有按照名称所暗示的那样进行操作。)
所以我正在编写一个选择排序算法,将排序的所有部分都转换为方法。但是,当我编译它时,它 returns 错误:
注意:一些消息已被简化;使用 -Xdiags:verbose 重新编译以获得完整输出
我做错了什么?
import java.io.*;
public class Driver01
{
public static void main(String[] args)
{
//input
double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 1.0, 6.2};
//sort the array
double[] sorted = process(myArray);
//output
System.out.print("" + sorted);
}
private static double findMax( int EndIndex, double[] enterArray) {
double max = 0;
int trueIndex = 0;
for( int x = 0; x < EndIndex; x++) {
if(enterArray[x] > max) {
max = enterArray[x];
trueIndex = x;
}
}
return trueIndex;
}
private static void swap(int swap1, int swap2, double[] enterArray) {
double temp = 0;
temp = enterArray[swap1];
enterArray[swap1] = enterArray[swap2];
enterArray[swap2] = enterArray[swap1];
}
private static double[] process(double[] enterArray) {
int range = enterArray.length -1;
for( int x = 0; x < enterArray.length-1; x++) {
double j = findMax(range, enterArray);
swap(j, range, enterArray);
range = range -1;
}
return enterArray;
}
}
修改后的代码:
import java.io.*;
public class Driver01
{
public static void main(String[] args)
{
//input
double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 1.0, 6.2};
//sort the array
double[] sorted = process(myArray);
//output
System.out.print("" + sorted);
}
private static int findMax( int EndIndex, double[] enterArray) {
double max = 0;
int trueIndex = 0;
for( int x = 0; x < EndIndex; x++) {
if(enterArray[x] > max) {
max = enterArray[x];
trueIndex = x;
}
}
return trueIndex;
}
private static void swap(int swap1, int swap2, double[] enterArray) {
double temp = 0;
temp = enterArray[swap1];
enterArray[swap1] = enterArray[swap2];
enterArray[swap2] = enterArray[swap1];
}
private static double[] process(double[] enterArray) {
int range = enterArray.length -1;
for( int x = 0; x < enterArray.length-1; x++) {
int j = findMax(range, enterArray);
swap(j, range, enterArray);
range = range -1;
}
return enterArray;
}
}
现在代码正在打印一个如下所示的数组:[D@15db9742 现在怎么了?
完整的错误信息是:
Driver01.java:41: error: incompatible types: possible lossy conversion
from double to int
swap(j, range, enterArray);
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose
to get full output
1 error
由此可见,您在调用 swap
时使用了 double
参数,而它期待的是 int
参数。
现在我不打算提出解决方案,但我会建议您仔细查看 findMax
正在做什么以及正在做什么 returning。特别是return类型!
(这里的部分问题是 findMax
变量的名称具有误导性。该方法并没有按照名称所暗示的那样进行操作。)