Java 我无法从数组中返回值
这是评估工作,所以请不要给出一个直接的答案 我的程序应该计算用户等级:“通过”、“失败”或“通过并获得补偿”。但是,它不会返回答案。我不明白为什么——有人能帮忙吗 公共类标记计算器{ 静态整数[]标记=新整数[12]Java 我无法从数组中返回值,java,arrays,Java,Arrays,这是评估工作,所以请不要给出一个直接的答案 我的程序应该计算用户等级:“通过”、“失败”或“通过并获得补偿”。但是,它不会返回答案。我不明白为什么——有人能帮忙吗 公共类标记计算器{ 静态整数[]标记=新整数[12] //public static Scanner keyboard = new Scanner(System.in); public static void main(String[] args) { Scanner kb = new Scanner(System.in);
//public static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int weighting;
int coursework;
int exammark;
System.out.println("Please enter course work weighting");
marks[0]= kb.nextInt();
System.out.println("Please enter course work mark");
marks[1]= kb.nextInt();
System.out.println("Please enter exam mark");
marks[2]= kb.nextInt();
MarkCalculator mc = new MarkCalculator();
mc.computeMarks(marks);
}
public String[] computeMarks(int[] marks) {
final int[] WEIGHTING = {55,66,55,44,33,44};
String[] results = new String[WEIGHTING.length];
for (int i = 0; i < marks.length / 2; i++) {
int exam = marks[i];
int cw = marks[i];
int weight = WEIGHTING[i];
int formula = ((cw + weight) + (exam * (100 - weight)) / 100);
if (formula >= 40){
results[i]="PASS";
} else if ((formula < 39) && (formula > 35)){
results[i]="COMPENSATION PASS";
}else{
results[i]="FAIL";
}
}
return results;
}
//公共静态扫描仪键盘=新扫描仪(System.in);
公共静态void main(字符串[]args){
扫描仪kb=新扫描仪(System.in);
整数加权;
国际课程;
国际考试标志;
System.out.println(“请输入课程作业权重”);
标记[0]=kb.nextInt();
System.out.println(“请输入课程作业分数”);
marks[1]=kb.nextInt();
System.out.println(“请输入考试分数”);
marks[2]=kb.nextInt();
MarkCalculator mc=新的MarkCalculator();
mc.计算机马克(马克);
}
公共字符串[]计算标记(整数[]标记){
最终整数[]权重={55,66,55,44,33,44};
字符串[]结果=新字符串[WEIGHTING.length];
对于(int i=0;i=40){
结果[i]=“通过”;
}否则如果((公式<39)和(&(公式>35)){
结果[i]=“补偿通过”;
}否则{
结果[i]=“失败”;
}
}
返回结果;
}
}
这里有个问题。权重没有初始大小
这里有个问题。权重没有初始大小 另外:您不会用任何东西初始化标记。试试这个:
System.out.println("Please enter course work weighting");
marks[0]= kb.nextInt();
System.out.println("Please enter course work mark");
marks[1]= kb.nextInt();
System.out.println("Please enter exam mark");
marks[2]= kb.nextInt();
MarkCalculator mc = new MarkCalculator();
mc.computeMarks(marks);
另外:您不会用任何东西初始化标记。试试这个:
System.out.println("Please enter course work weighting");
marks[0]= kb.nextInt();
System.out.println("Please enter course work mark");
marks[1]= kb.nextInt();
System.out.println("Please enter exam mark");
marks[2]= kb.nextInt();
MarkCalculator mc = new MarkCalculator();
mc.computeMarks(marks);
问题是权重是空的
final int[] WEIGHTING = {}; // empty
String[] results = new String[WEIGHTING.length];
for (int i = 0; i < marks.length / 2; i++) {
int exam = marks[i];
int cw = marks[i];
int weight = WEIGHTING[i]; // You cant access elements from an empty array
这是你的及格分数,是空的
编辑
您的程序无法运行的原因是,您无法从计算机测试中捕获结果。您应该将其存储在main中的数组中,如
String[] result = mc.computeMarks(marks);
for(int k=0;k<result.length;k++)
{
System.out.println(result[k]);
}
String[]result=mc.computeMarks(标记);
对于(int k=0;k而言,问题在于权重为空
final int[] WEIGHTING = {}; // empty
String[] results = new String[WEIGHTING.length];
for (int i = 0; i < marks.length / 2; i++) {
int exam = marks[i];
int cw = marks[i];
int weight = WEIGHTING[i]; // You cant access elements from an empty array
这是你的及格分数,是空的
编辑
您的程序无法运行的原因是您无法从计算机标记中捕获结果。您应该将其存储在main中的数组中,如
String[] result = mc.computeMarks(marks);
for(int k=0;k<result.length;k++)
{
System.out.println(result[k]);
}
String[]result=mc.computeMarks(标记);
对于(int k=0;kYes,您可以在方法中将变量声明为final。我在权重中初始化了数字,但只是为了找到解决方案而将它们取出。我有六个随机数,但我不必初始化数字,因为如果有人的权重超出了6个数字?@user2961364,那么您需要一个Ar光线列表
或某种类型的列表
。数组不会自动递增。请记住,您在上面的代码中没有为标记
指定值。是的,您可以在方法中将变量声明为final。我在权重中初始化了数字,但只是将其取出,希望找到一个解决方案。我有六个随机n数字,但我不应该初始化数字,因为如果有人的权重超出了6个数字?@user2961364,那么你需要一个数组列表
或某种列表
。数组不会自动递增。另外,请记住,你没有在上面的代码中为标记
指定值。当formula==39
result将失败,我不认为这是你所期望的,只是一个旁注,当formula==39
result将失败时,我不认为这是你所期望的,因为标记[0],标记[1]和标记[2]。你的意思是标记[0],标记[1]和标记[2],因为标记没有定义?所以我改变了----final int[]权重={55,66,55,44,33,44};---所以加权现在有一些数字作为cw的加权。但是对于markCalculator位,我不太明白,它不允许我把数字放在里面来通过评分。但是当我输入标记量和加权时,程序仍然终止,没有任何计算,它应该完成。你可以在像Syst这样的地方打印结果吗em.out.println(mc.computeMarks(marks.toString());?嘿,这里是马克[0]、马克[1]和马克[2]。你是说马克[0]、马克[1]和马克[2],因为马克没有定义吗?所以我改变了----final int[]权重={55,66,55,44,33,44};---所以加权现在有一些数字作为cw的加权。但是对于markCalculator位,我不太明白,它不允许我把数字放在里面来通过评分。但是当我输入标记量和加权时,程序仍然终止,没有任何计算,它应该完成。你可以在像Syst这样的地方打印结果吗em.out.println(mc.computeMarks(marks.toString());?我已经将权重设置为final int[]权重={55,66,55,44,33,44};以及marks[0]=kb.nextInt();marks[1]=kb.nextInt();marks[2]=kb.nextInt();所以标记不再是空的了?仍然没有收到通知我是否通过的答案我已经将权重设置为final int[]权重={55,66,55,44,33,44};标记[0]=kb.nextInt();标记[1]=kb.nextInt();标记[2]=kb.nextInt();因此标记不再为空?仍然没有收到通知我是否通过的答案