Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从用户处读取一系列数字,直到输入-1,Java_Java_Input_While Loop_Java.util.scanner_Do While - Fatal编程技术网

从用户处读取一系列数字,直到输入-1,Java

从用户处读取一系列数字,直到输入-1,Java,java,input,while-loop,java.util.scanner,do-while,Java,Input,While Loop,Java.util.scanner,Do While,我正试图编写一个程序,从用户那里读取一系列数字,直到输入-1为止。然后它应该打印这些数字的平均值(带小数)(不包括-1)。这是我到目前为止所拥有的,但是每当我输入-1时,它似乎都不能正常工作。这就是我迄今为止所做的: import java.util.Scanner; import java.util.*; public class Tute1 { public static void main (String[] args) { Scanner sc =

我正试图编写一个程序,从用户那里读取一系列数字,直到输入-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);
     }  
     }
import java.util.Scanner;
导入java.util.*;
公共课图腾1
{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入您想要的数字:”);
int numb=sc.nextInt();
int i=0;
int-total=0;

而(i你的代码似乎有点奇怪。以下是我将如何做到这一点

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和其他内容,这样用户就不会利用此漏洞了。

您的代码似乎有点奇怪。下面是我的做法

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和其他内容,这样用户就不会利用这一点了

  • 首先,你不需要在while循环中创建一个新的扫描器作为你的代码。这是因为while循环在你的函数作用域中,所以你在函数中声明的每一件事while循环都知道。(反之亦然)
  • 第二,您的中断条件应该在while循环中,而if with break是冗余的和不必要的
  • 第三件事,你应该摆脱麻木,因为它正在做
我认为这个解决方案更小更优雅

几件事:

  • 首先,你不需要在while循环中创建一个新的扫描器作为你的代码。这是因为while循环在你的函数作用域中,所以你在函数中声明的每一件事while循环都知道。(反之亦然)
  • 第二,您的中断条件应该在while循环中,而if with break是冗余的和不必要的
  • 第三件事,你应该摆脱麻木,因为它正在做

我认为这个解决方案更小、更优雅

好的,你看到的问题是什么?你说它不能正常工作是什么意思?什么不起作用,输入-1后它没有停止循环?还有,当用户在循环之前输入他们计划输入的数字量时,为什么你把-1作为停止条件开始?好的,你看到的问题是什么?你说它不能正常工作是什么意思?什么不起作用,输入-1后它没有停止循环?还有,当你让用户在循环开始前输入他们计划输入的数字量时,为什么你要将-1作为停止条件?你应该编辑它以放置code转换为“{}”块格式。@NomadMaker嘿,对不起,我是从手机应答的。我修复了代码块。您应该编辑此代码以将代码转换为“{}”块格式。@NomadMaker嘿,对不起,我是从手机应答的。我修复了代码块