我目前正在编写一个程序作为类的练习,其中提示用户输入一系列数字,输入应以0结束。当程序与输入的正数接触时,它应该能够将变量的正和加1。程序应该能够在与输入中的负数接触时向变量负和加1。程序应该把所有这些数字加在一起,以获得总数。程序应该能够得到平均值并将其显示为双精度。
当我尝试运行这个程序时,我得到了一个路径,指向我的下载文件夹中intellij所在的目录。
我不确定我能尝试什么不同的方式。IDE中没有弹出错误警告。
这是我的代码:
` import java.util.Scanner;
public class LoopPractice {
public static void main(String[] args) {
//create scanner object
Scanner input = new Scanner(System.in);
int positiveSum = 0;
int negativeSum = 0;
int numberOfPositive = 0;
int numberOfNegative = 0;
int totalNumbers = 0;
int integers = input.nextInt();
while(integers != 0){
System.out.println("Enter integers ending with 0: ");
integers = input.nextInt();
if (integers > 0) {
positiveSum += integers;
numberOfPositive++;
totalNumbers++;
System.out.println("The number of positives is " + positiveSum);
} else if (integers < 0) {
negativeSum += integers;
numberOfNegative++;
totalNumbers++;
System.out.println("The number of negatives is " + negativeSum);
}
double average = (numberOfPositive + numberOfNegative) / totalNumbers;
System.out.println("The total is: " + totalNumbers);
System.out.println("The average is: " + average);
}
}
}
`
3条答案
按热度按时间myzjeezk1#
当你执行你的代码时,它停止在
“int nums = nums();“
并期望您在向下循环之前提供输入。在声明int变量时调用了nextInt()方法,因此扫描器需要一个int输入。这就是为什么在intellij目录后会看到空白。
我对你的代码做了一点调整,其余部分保持不变。我在你声明integers变量之前打印了一条语句。所以,当你进入循环时,你提供的第一个输入计数,一旦循环结束,我们再次检查新的输入。(或者,你可以按照Reilas的建议使用do while循环)
更改了几个变量名numberOfPositive > positiveValue。.等等。
public static void main(String[] args){ Scanner input = new Scanner(System.in);
8ljdwjyq2#
使用一个 *do-while循环 * 和一个 boolean。
此外,您可以将 * BigInteger * 类用于 positiveSum 和 negativeSum。
这里有一个例子。
输出
z4bn682m3#
"When I do try running the program, I get a pathway to the directory in which intellij is held in my downloads folder."
我完全不知道你是什么意思:/但是,它看起来更像是一个IntelliJ设置问题,而不是你确实有一个实际的代码问题。你是如何运行代码来解决这个问题的?在你发布的问题中解释一下。
下面是一个可运行的例子,解释了如何使用用户输入验证来完成这一点(阅读代码中的注解-注解使代码看起来很像,但实际上不是。如果你喜欢的话,你可以删除它们:
演示中使用的唯一扫描器方法是Scanner#nextLine()方法,我认为它提供了更好的输入控制,但这只是我的意见。为了执行用户输入验证,演示使用了String#matches()方法,该方法传递了一个小的Regular Expression(regex):
"-?\\d+"
基本上是这样的:-?
数字字符串可以以减号开头,也可以不以减号开头,表示字符串值是有符号的(如果有,则为负数)还是无符号的(如果没有,则为正数);\\d+
数字字符串只包含0到**9* 的 * 一个或多个 * 数字。