所以我在这个程序上呆了一段时间,我已经让一切工作了,没有编译错误,但现在我得到了一个奇怪的输出,首先病态地发布了程序的问题。
import java.util.Scanner;
import java.util.*;
public class project3 {
private static double[] payrate;
private static String[] names;
public static void SortData(double payrate[]) {
int first;
int temp;
int i;
int j;
for (i = payrate.length - 1; i > 0; i--) {
first = 0;
for (j = 1; j <= i; j++) {
if (payrate[j] < payrate[first]) {
first = j;
}
}
temp = (int) payrate[first];
payrate[first] = payrate[i];
payrate[i] = temp;
}
}
public static void GetData() {
Scanner input = new Scanner(System.in);
System.out.println("How many names do you want to enter?");
String strNum = input.nextLine();
int num = Integer.parseInt(strNum);
int array[] = new int[num];
for (int i = 0; i < array.length; i++) {
names = new String[num];
System.out.println("enter employee's name: ");
names[i] = input.nextLine();
//while(names[i].length < 2)
//{
//System.out.println("enter valid employee's name: ");
//names[i] = input.nextLine();
//}
}
for (int j = 0; j < array.length; j++) {
payrate = new double[num];
System.out.println("enter employee's payrate: ");
payrate[j] = input.nextDouble();
while (payrate[j] > 100 || payrate[j] < 0) {
System.out.println("enter valid employee's payrate: ");
payrate[j] = input.nextDouble();
}
}
}
public static void DisplayData(double payrate[], String names[]) {
System.out.printf("Name PayRaten");
for (int l = 0; l < names.length; l++) {
//for(int i=0;i<names.length;i++)
// {
System.out.print(names[l]);
System.out.printf("n", payrate[l]);
//}
}
}
public static void main(String[] args) {
GetData();
SortData(payrate);
DisplayData(payrate, names);
}
}
该程序应该打印出这样的东西
Name Payrate
Daniel 54.76
josh 73.12
kyle 12.54
但是程序正在打印出这个
Name PayRate
null
null
null
null
qt
一些你可以纠正它的地方。
在
GetData()
,你应该把names = new String[num];
放在任何地方在循环开始之前,所以Deospayrate = new double[num];
.在
SortData()
中,为什么不使用double temp;
? 那么你不必将payrate[first]
变成int类型。在
DisplayData()
,System.out.printf("n", payrate[l]);
除了换行什么都没有。我认为最好这样做System.out.printf("NametPayRaten"); for (int l = 0; l < names.length; l++) { System.out.print(names[l]); System.out.println("t"+payrate[l]); }
好吧,用代码解释比用英语更容易。 :'(
public static void SortData(double payrate[]) {
int first;
double temp;
String tempString;
int i;
int j;
for (i = payrate.length - 1; i > 0; i--) {
first = 0;
for (j = 1; j <= i; j++) {
if (payrate[j] < payrate[first]) {
first = j;
}
}
temp = payrate[first];
payrate[first] = payrate[i];
payrate[i] = temp;
tempString = names[first];
names[first] = names[i];
names[i] = tempString;
}
}