Может ли кто-нибудь помочь проанализировать мой java-код в программе усреднения?

#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 не будет распространяться на функции. Далее, нет цикла для продолжения их вызова.