Java 如何修理我的计数器和平均计算器
我必须创建一个代码,根据用户输入的学生姓名,接受用户输入的分数 当输入的数字小于0时,输入停止,输出应为学生姓名、所有分数的总和和平均分数 由于某些原因,我无法获得要打印的平均值或总数,并且我的学生类中的计数器显示了一个错误“删除此标记'+'。” 这是我的主课和学生课:Java 如何修理我的计数器和平均计算器,java,class,counter,setter,getter,Java,Class,Counter,Setter,Getter,我必须创建一个代码,根据用户输入的学生姓名,接受用户输入的分数 当输入的数字小于0时,输入停止,输出应为学生姓名、所有分数的总和和平均分数 由于某些原因,我无法获得要打印的平均值或总数,并且我的学生类中的计数器显示了一个错误“删除此标记'+'。” 这是我的主课和学生课: /** * COSC 210-001 Assignment 2 * Prog2.java * * description * * @author Tristan Shumaker */ import java.util.Sc
/**
* COSC 210-001 Assignment 2
* Prog2.java
*
* description
*
* @author Tristan Shumaker
*/
import java.util.Scanner;
public class main {
public static void main( String[] args) {
double[] addQuiz = new double[99];
int counter = 0;
//Creates new scanner for input
Scanner in = new Scanner( System.in);
//Prompts the user for the student name
System.out.print("Enter Student Name: ");
String name = in.nextLine();
// requests first score and primes loop
System.out.print("Enter Student Score: ");
int scoreInput = in.nextInt();
while( scoreInput >= 0 ) {
System.out.print("Enter Student Score: ");
scoreInput = in.nextInt();
counter++;
}
System.out.println( );
System.out.println("Student name: " + name);
System.out.printf( "\nAverage: %1.2f", total(addQuiz, counter) );
System.out.printf( "\nAverage: %1.2f", average(addQuiz, counter) );
}
}
我的学生班:
public class Student {
private String name;
private int total;
private int counter;
public Student() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public void addQuiz( int scoreInput) {
total += scoreInput;
int counter++;
}
public static double average( double[] addQuiz, int counter ) {
double sum = 0;
for( int t = 0; t < counter; t++) {
sum += addQuiz[t];
}
return (double) sum / counter;
}
}
公共班级学生{
私有字符串名称;
私人整数合计;
专用int计数器;
公立学生(){
超级();
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共int getTotal(){
返回总数;
}
公共无效集合总计(整数总计){
这个.总计=总计;
}
公共void addquick(int scoreInput){
总+=分数输入;
int计数器++;
}
公共静态双平均(双[]加法测验,整数计数器){
双和=0;
for(int t=0;t
非常感谢你们能提供的任何帮助,谢谢你们的帮助。change
int counter++将addquick()
方法中的code>添加到counter++
,否则您将尝试声明标识符为计数器+
的变量,该标识符不是有效标识符。另外,由于您已将average()
声明为Student
类上的静态方法,因此您需要这样调用它:
Student.average(addQuiz, counter);
我没有在您的代码中看到total()
的定义,所以我不知道这是否适用
编辑
要回答average()
返回零的原因,您似乎从未在传入的addquick
双数组中设置任何值,因此它将包含所有零,因此sum
将为0。我认为您要做的是更改main方法中的while循环,将scoreInput
值放入计数器的数组中,如下所示:
while( scoreInput >= 0 ) {
System.out.print("Enter Student Score: ");
scoreInput = in.nextInt();
addQuiz[counter] = scoreInput;
counter++;
}
在你的主课上,你根本不用你的学生
课
考虑做
Student student = new Student (name);
然后使用以下方法:
student.addQuiz (scoreInput);
后来
student.getTotal ();
等等
您也不需要将变量counter
存储在Student
对象中,因为它是作为参数传递的。非常感谢。这是一个错误,我看了一百遍都没注意到。addquick
是Student
@ScaryWombat上的一种方法是的;它包含一个错误(OP询问了这个问题)。它也是OP的主类中的一个双数组,在调用average()
方法时使用。。。“你的意思是什么?如果有你们这些有帮助的人在这里,你们知道我的平均数会返回0的原因吗?”thesu用我认为你想要的东西编辑了我的答案好吧,我想我理解你所说的概念,我会努力弄明白的。谢谢你