Чтение ряда чисел от пользователя до ввода -1, Java - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь написать программу для чтения ряда чисел от пользователя, пока не будет введено -1. Затем он должен вывести среднее (с десятичными знаками) этих чисел (не включая -1). Это то, что у меня есть до сих пор, но, похоже, он не работает должным образом, когда я ввожу -1. Вот что у меня есть:

   import java.util.Scanner;
    import java.util.*;  
    public class Tute1
    {
public static void main (String[] args) {
   Scanner sc = new Scanner(System.in);
  System.out.println("Enter how many numbers you want: ");
  int numb = sc.nextInt();
  int i =0;
  int total =0;
  while (i <= numb) {
      Scanner scan = new Scanner(System.in);
      System.out.println("Enter an integer ");
      int myChoice=scan.nextInt();
      total=total+myChoice;
      i=i+1;
if(myChoice == -1) {
          System.out.println("The average is "+ (total+1)/numb);
          break;
}    
}
    System.out.println("The average is "+ total/numb);
     }  
     }

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Ваш код кажется немного странным. Вот как я бы это сделал

import java.util.Scanner;
import java.util.*;

public class Tute1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = 0;
        int total = 0;
        while (true) {
            System.out.println("Enter an integer ");
            int myChoice = scan.nextInt();
            if (myChoice != -1) {
                total = total + myChoice;
                i += 1;
            } else {
                break;
            }

        }
        float average = total / i;
        System.out.println("The average is " + average);

    }

Надеюсь, это поможет. Вы можете добавить try-catch и прочее, чтобы пользователь не использовал это

0 голосов
/ 09 июля 2020

Немногое:

  • Прежде всего вам не нужно создавать новый сканер в качестве кода внутри while l oop. Это потому, что while l oop находится внутри вашей области действия, поэтому все, что вы объявляете, функционирует, о чем знает while l oop. (Это не работает наоборот)
  • второе ваше условие разрыва должно быть внутри while l oop if with break является избыточным и ненужным.
  • третье, что вы должны избавиться оцепенения, поскольку он делает nithung
    import java.util.Scanner;
    import java.util.*;
    public class Tute1 {
        public static void main (String[] args) {
            Scanner sc = new Scanner(System.in);
            int numb = sc.nextInt();
            int i =0;
            int total =0;
            while (numb != -1) 
            { 
                total=total+numb;
                i=i+1;
                int numb = sc.nextInt() 
            }
            System.out.println("The average is "+ total/i); 
        }
    }

Я думаю, что это решение меньше и элегантнее

...