Yaswanth Kummar Ответов: 2

Что не так в коде


Мой вывод выглядит следующим образом :
Введите идентификатор
9999
Записаться
Тарак
Введите нет предметов
3
Введите метки
88
Введите метки
99
Введите метки
77
Id :9999
Имя :Тарак
среднее значение :0.0
класс :F

Что я уже пробовал:

package myproject;
import java.util.*;

class Student{
	
	int id;
	String name;
	int sub;
	int marks[] = new int[100];
	double avg;
	char grade;
	int i;
	
	public int getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public int getSub() {
		return sub;
	}
	
	public void setId(int id) {
		this.id=id;
	}
	public void setName(String name) {
		this.name=name;
	}
	public void setSub(int sub) {
		this.sub=sub;
	}
	
	public double getAvg() {
		return avg;
	}
	public void setAvg(double avg) {
		this.avg=avg;
	}
	
	public int[] getMarks() {
	return marks;
	}
	public void setMarks(int a[]) {
		this.marks=a;
	}
	
	public char getGrade() {
		return grade;
	}
	public void setGrade(char grade) {
		this.grade=grade;
	}
	public void calcAvg() {
		int total=0;
		for(int i=0; i<marks.length; i++) {
			total= total + marks[i];
		}
		avg=(total/marks.length);
	}
	
	public void findGrade() {
		
		if(marks[i]<50) {
			grade = 'F';
		}
		else {
			if(avg>=80 && avg<=100)
				grade='O';
			if(avg>=50 && avg<=80)
				grade='A';
			if(avg<50)
				grade='F';
		}
	}
}

public class Methods8 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Enter the id ");
		int id = sc.nextInt();
		System.out.println("Enter the name ");
		String name = sc.next();
		System.out.println("Enter no of subjects ");
		int sub = sc.nextInt();
		
		int a[] = new int[sub];
		
		for(int i=0; i<sub; i++) {
			System.out.println("Enter the marks ");
			a[i]=sc.nextInt();
		}
		
		Student s = new Student();
		s.setId(id);
		s.setName(name);
		s.setSub(sub);
		
		System.out.println("Id :" +s.getId());
		System.out.println("Name :" +s.getName());
		s.calcAvg();
		s.findGrade();
		System.out.println("average :" +s.getAvg());
		System.out.println("grade :" +s.getGrade());
		
	}

}

Sandeep Mewara

Ваш код неполон.

Yaswanth Kummar

обновил свой вопрос

Richard MacCutchan

В чем проблема с этим кодом?

2 Ответов

Рейтинг:
2

Sandeep Mewara

Ваш calcAvg() основан на собственности marks Вы никогда не настраиваете его после того, как принимаете входные данные . Таким образом, значение равно нулю.

Вам нужно установить такие метки, как:

Student s = new Student();
s.setId(id);
s.setName(name);
s.setSub(sub);
s.setMarks(a); //Added - was missing


Итак, 2 вещи:
1. Вам нужно узнать об отладке (предполагая, что eclipse), см.: Отладка среды разработки Eclipse IDE для разработчиков Java | The Eclipse Foundation[^]
2. Вам нужно узнать о scopes - local/global, см.: Область действия переменных в Java - GeeksforGeeks[^]


Рейтинг:
1

Patrice T

Ваш код был поврежден при вставке на коробку, и часть отсутствует.

Цитата:
Что не так в коде

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.