从用户处读取一系列数字,直到输入-1,Java
我正试图编写一个程序,从用户那里读取一系列数字,直到输入-1为止。然后它应该打印这些数字的平均值(带小数)(不包括-1)。这是我到目前为止所拥有的,但是每当我输入-1时,它似乎都不能正常工作。这就是我迄今为止所做的:从用户处读取一系列数字,直到输入-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 =
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嘿,对不起,我是从手机应答的。我修复了代码块