Java 数组不返回值
大家好,第一次海报和java初学者 问题:尝试使用gradeDistn方法返回学生分数的计数值 gradeDistn方法将接受一个字符数组,这些字符是为标记数组指定的等级,如grades方法返回的等级。gradeDistn方法将返回一个包含等级分布的整数值数组,即每个等级在指定等级中出现的次数。用于等级的字符是固定的。返回的数组应按从A级到F级的顺序提供分布 输出 敏是24岁 马克斯97岁了 射程是74 平均值是62 中位数是62 模式是53 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEEE DDDDDDDDDD CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 标记的分布 A:1 B:1 C:1 D:1 E:1 F:1Java 数组不返回值,java,arrays,Java,Arrays,大家好,第一次海报和java初学者 问题:尝试使用gradeDistn方法返回学生分数的计数值 gradeDistn方法将接受一个字符数组,这些字符是为标记数组指定的等级,如grades方法返回的等级。gradeDistn方法将返回一个包含等级分布的整数值数组,即每个等级在指定等级中出现的次数。用于等级的字符是固定的。返回的数组应按从A级到F级的顺序提供分布 输出 敏是24岁 马克斯97岁了 射程是74 平均值是62 中位数是62 模式是53 FFFFFFFFFFFFFFFFFFFFFFFFFF
import java.util.Random;
导入java.lang.Math;
导入java.lang.reflect.Array;
导入java.util.array;
公开课分数{
专用静态最终整数标记=125;
私人静态最终双平均值=65.0;
专用静态最终双标准=15.0;
/**
*返回近似正态分布的NMARK整数标记数组,
*具有规定的平均值(平均值)和标准偏差(标准偏差),
*并删除0..100以外的值。
*@返回标记数组。
*/
公共静态int[]getMarks(){
随机随机数=新随机数(1001L);
整数标记;
int[]标记=新的int[n标记];
int n=0;
while(n=0&&mark=90)
convertedGrades[i]=标记[0];
否则,如果(等级[i]>=75)
convertedGrades[i]=标记[1];
否则,如果(等级[i]>=60)
convertedGrades[i]=标记[2];
否则,如果(等级[i]>=50)
convertedGrades[i]=标记[3];
否则,如果(等级[i]>=45)
convertedGrades[i]=标记[4];
其他的
convertedGrades[i]=标记[5];
}
返回转换等级;
}
//等级分布法
公共静态int[]gradeDistn(char[]arr){
char[]characterArray=新字符[arr.length];
int A=0,B=0,C=0,D=0,E=0,F=0;
for(字符i=0;i
}
不将标记
与A
、B
等链接。
当您增加时,A
标记保持不变
我建议您在所有计算完成后构建标记
。简单地说,int[]标记={A,B,C,D,E,F}代码>就在返回之前
PS:if(characterArray[i]='B')A++
对我来说是错误的。既然@talex解释了你的代码有什么问题,我可以给你指出一个更好的解决方案:因为你的分数
是字母序列,它们可以与长度'F'-'a'+1
的数组相匹配(介于'a'
和'F'
之间的字母数)。匹配函数将尽可能简单:使用grade-'A'
作为数组索引,使用i+'A'
作为恢复函数。请提供一个而不是片段,并将输出作为文本而不是屏幕截图。(毕竟,这只是文本…)你可能还想问问自己,你期望什么grades[i]=i代码>要做的事。。。你忽略了n
参数,只是想知道它有多大。(老实说,getGrades
中为什么有一个grades
数组…)感谢这些快速回复的家伙,我真的很惊讶这里的社区是多么的有帮助和快速。我已尝试修复返回数组标记[],但对于输出上的所有值,仍然得到1的输出。
import java.util.Random;
import java.lang.Math;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Marks {
private static final int NMARKS = 125;
private static final double mean = 65.0;
private static final double std = 15.0;
/**
* Returns an array of NMARKS integer marks approximately normally distributed,
* with specified mean (mean) and standard deviation (std),
* and with values outside 0..100 removed.
* @return the array of marks.
*/
public static int[] getMarks() {
Random rand = new Random(1001L);
int mark;
int[] theMarks = new int[NMARKS];
int n = 0;
while (n < NMARKS) {
mark = (int) Math.round(std*rand.nextGaussian() + mean);
if (mark >= 0 && mark <= 100)
theMarks[n++] = mark;
}
return theMarks;
}
/**
* Test code
* @param args not used
*/
public static void main(String[] args) {
int[] testMarks = getMarks();
int[] sortedMarks = arraySort (testMarks);
System.out.println("Unsorted marks\n");
for (int n = 0; n < testMarks.length; n++) {
System.out.print(testMarks[n] + " ");
if (n % 10 == 9)
System.out.println();
}
System.out.println("\n\nSorted marks\n");
for (int n = 0; n < sortedMarks.length; n++) {
System.out.print(sortedMarks[n] + " ");
if (n % 10 == 9)
System.out.println();
}
System.out.println("\n\n");
//Print Minimum
int minimum = getMin(getMarks());
System.out.println("Min is " + minimum);
//Print Maximum
int maximum = getMax(getMarks());
System.out.println("Max is " + maximum);
//Print Range
int range = (getRange(maximum, minimum));
System.out.println("Range is " + range);
//Print Mean
int mean = getMean(getMarks());
System.out.println("Mean is " + mean);
//Print Median
int median = getMedian(sortedMarks);
System.out.println("Median is " + median);
//Print Mode
int mode = getMode(sortedMarks);
System.out.println("Mode is " + mode);
//Print Grades
char[] grades = getGrades(sortedMarks);
System.out.println(grades);
//Print gradeDistn
int[] gradeDistrubution = gradeDistn(grades);
System.out.println("Distribution of Marks\nA: " + gradeDistrubution[0] + "\nB: " + gradeDistrubution[1] + "\nC: " +
gradeDistrubution[2] + "\nD: " + gradeDistrubution[3] + "\nE: " + gradeDistrubution[4] +
"\nF: " + gradeDistrubution[5]);
}
//getMin method will return the minimum mark
public static int getMin(int[] inputArray){
int minValue = inputArray[0];
for(int i=1;i < inputArray.length;i++){
if(inputArray[i] <minValue){
minValue = inputArray[i];
}
}
return minValue;
}
//getMax method will return the maximum mark
public static int getMax(int[] inputArray){
int maxValue = inputArray[0];
for(int i=1;i < inputArray.length;i++){
if(inputArray[i] > maxValue){
maxValue = inputArray[i];
}
}
return maxValue;
}
//getRange method will find the difference between the maximum and minimum marks
public static int getRange(int maxNum, int minNum){
int max = maxNum;
int min = minNum;
int range = (max - min) + 1;
return range;
}
//getMean method will return the average of marks
public static int getMean(int[] inputArray){
int total = 0;
for(int i: inputArray){
total += i;
}
return total/(inputArray.length);
}
// arraySort method sorts the array of grades in numerical ascending order
public static int [] arraySort(int [] inputArray){
int [] sortedArray = Arrays.copyOf(inputArray, inputArray.length);
Arrays.sort(sortedArray);
return sortedArray;
}
//getMedian method will return the median value of the set of marks
public static int getMedian(int[] inputArray){
int listLength = inputArray.length;
int x = listLength / 2;
int median = inputArray[x];
return median;
}
//getMode method will return the mode of the set of marks, which is the most commonly occurring mark
public static int getMode(int[] n) {
int maxValue = 0;
int maxCounts = 0;
int[] counts = new int[n.length];
for (int i=0; i < n.length; i++) {
counts[n[i]]++;
if (maxCounts < counts[n[i]]) {
maxCounts = counts[n[i]];
maxValue = n[i];
}
}
return maxValue;
}
/*grades method will return an array of characters which are the grades
corresponding to the integer marks in the array of marks */
public static char [] getGrades(int[] n){
int[] grades = new int[n.length];
char[] marks = {'A', 'B', 'C', 'D', 'E', 'F'};
char[] convertedGrades = new char[n.length];
for (int i = 0 ; i < grades.length; i++){
grades [i] = i;
if (grades[i] >= 90)
convertedGrades[i] = marks[0];
else if (grades[i] >= 75)
convertedGrades[i] = marks[1];
else if (grades[i] >= 60)
convertedGrades[i] = marks[2];
else if (grades[i] >= 50)
convertedGrades[i] = marks[3];
else if (grades[i] >= 45)
convertedGrades[i] = marks[4];
else
convertedGrades[i] = marks[5];
}
return convertedGrades;
}
// GRADESDISTN METHOD
public static int[] gradeDistn(char[] arr){
char[] characterArray = new char[arr.length];
int A=0,B=0,C=0,D=0,E=0,F=0;
for (char i = 0 ; i < characterArray.length; i++){
characterArray [i] = i;
if (characterArray[i] == 'A')
A++;
if (characterArray[i] == 'B')
B++;
if (characterArray[i] == 'C')
C++;
if (characterArray[i] == 'D')
D++;
if (characterArray[i] == 'E')
E++;
if (characterArray[i] == 'F')
F++;
}
int[] marks = {A, B, C, D, E, F};
return marks;
}
int A=0,B=0,C=0,D=0,E=0,F=0;
int[] marks = {A, B, C, D, E, F};