#java
#java
Вопрос:
Привет, я начал изучать java онлайн уже две недели, но, просматривая эти учебные пособия, я почувствовал, что единственный способ усвоить эту информацию — это практиковать ее. Мои другие программы работали отлично, но как раз в тот момент, когда я решил сделать что-то впечатляющее (конечно, только для меня; специалист по Java счел бы создание этой программы ошеломляющим), что-то пошло не так. Я был бы очень признателен, если бы вы могли взглянуть на приведенный ниже мой код программы усреднения, которая может усреднять любое количество чисел, которое вы хотите, и скажите мне, что в мире я сделал не так.
ОБНОВЛЕНИЕ: Eclipse просто выводит случайное число после ввода только одного числа, а затем завершает работу программы. Вот снимок, на котором я набираю в консоли в среднем 6 чисел, а затем начинаю с цифры 7, но по какой-то причине, когда я снова нажимаю enter, выводится 8.
package justpracticing;
import java.util.*;
public class average{
int grade = 0;
int average;
Scanner notoaverage = new Scanner(System.in);
System.out.println("Please enter the amount of numbers you'd like the average of! ");
final int totalaverage = notoaverage.nextInt();
Scanner averagingno = new Scanner(System.in);
System.out.println("Start typing in the " totalaverage " numbers");
int numbers = averagingno.nextInt();
int counter = 0;
public void averagingnumbers(){
while(counter<=totalaverage){
grade =numbers;
counter;
}
}
public void printStatement(){
average = grade/totalaverage;
System.out.println(average);
}
}
Комментарии:
1. Вы не сказали, в чем заключается ошибка, что вы пытались исправить и т.д.
2. Ну,
main
для начала вам нужен метод.3. counter;, поправьте меня, если я ошибаюсь, но разве это не должно быть counter ;?
4. @user3045026 Разницы нет.
Ответ №1:
Кажется, что вы создали average
объект в другом классе и вызываете методы, заданные из основного класса.
Я не знаю, с чем именно у вас возникли проблемы, но здесь есть одна проблема:
average = grade/totalaverage;
Эти 2 переменные, которые вы делите, являются целыми числами. Это означает, что результатом также будет целое число. Это называется усечением. Что вы хотите сделать, это сначала преобразовать хотя бы одно из целых чисел в double:
... = (grade * 1.0) / totalaverage;
Вы также хотите, чтобы ваша average
переменная была double вместо целого числа, чтобы она могла быть намного более точной.
Комментарии:
1. Спасибо. Я скопирую и вставлю код в свой основной класс и попробую преобразовать эти целые числа в double и посмотреть, решит ли это проблему
2. Много проблем…. Прежде всего, посмотрите на его переменные. Если вы переместите все в main, возникнет проблема из-за того, что область действия переменных в main не будет распространяться на функции. Далее, нет цикла для продолжения их вызова.