Java 在while循环中查找最大整数和最小整数
上面是我的代码,我已经尝试了一切,我没有得到任何错误,但是最小和最大的返回没有正确返回,我只得到最大整数如果它是正的,只有最小值如果用户输入一个负整数。任何帮助都会很棒 您正在检查n个最大值或最小值。但你不是在做作业。试试这个:Java 在while循环中查找最大整数和最小整数,java,while-loop,Java,While Loop,上面是我的代码,我已经尝试了一切,我没有得到任何错误,但是最小和最大的返回没有正确返回,我只得到最大整数如果它是正的,只有最小值如果用户输入一个负整数。任何帮助都会很棒 您正在检查n个最大值或最小值。但你不是在做作业。试试这个: import java.util.Scanner; public class Lab4 { public static void main(String[] args) { Scanner in = new Scanner(System
import java.util.Scanner;
public class Lab4
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Please enter integers (Zero to exit): ");
//integers by value
int n = in.nextInt();
int evenNumber = -1;
int oddNumber = 0;
int count = 0;
int largest = n;
int smallest = n;
int counter = 1;
int total = 0;
int average = 0;
//boolean to end loop
boolean done = false;
//start of loop
while (!done)
{
n = in.nextInt();
total = total + n;
//end loop method
if (n == 0)
{
done = true;
}
//count number of integers entered
else
{
count = count + 1;
}
//count of even numbers
if ( n % 2 == 0){
evenNumber = evenNumber + 1;
}
//count of odd numbers
else
{
oddNumber = oddNumber + 1;
}
//find min and max integers !NOT WORKING!
if (n > largest){
}
if (n < smallest){
}
if (count > 0){
average = total / count;
}
else{
System.out.println("No Data Entered.");
}
counter++;
}
System.out.println("Total number of integers entered is: "+ count);
System.out.println("Total even numbers entered: "+ evenNumber);
System.out.println("Total odd numbers entered: "+ oddNumber);
System.out.println("The largest integer: "+ largest);
System.out.println("The smallest integer: "+ smallest);
System.out.println("The average value is: "+ average);
}
}
您正在检查n个最大的或最小的。但你不是在做作业。试试这个:
import java.util.Scanner;
public class Lab4
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Please enter integers (Zero to exit): ");
//integers by value
int n = in.nextInt();
int evenNumber = -1;
int oddNumber = 0;
int count = 0;
int largest = n;
int smallest = n;
int counter = 1;
int total = 0;
int average = 0;
//boolean to end loop
boolean done = false;
//start of loop
while (!done)
{
n = in.nextInt();
total = total + n;
//end loop method
if (n == 0)
{
done = true;
}
//count number of integers entered
else
{
count = count + 1;
}
//count of even numbers
if ( n % 2 == 0){
evenNumber = evenNumber + 1;
}
//count of odd numbers
else
{
oddNumber = oddNumber + 1;
}
//find min and max integers !NOT WORKING!
if (n > largest){
}
if (n < smallest){
}
if (count > 0){
average = total / count;
}
else{
System.out.println("No Data Entered.");
}
counter++;
}
System.out.println("Total number of integers entered is: "+ count);
System.out.println("Total even numbers entered: "+ evenNumber);
System.out.println("Total odd numbers entered: "+ oddNumber);
System.out.println("The largest integer: "+ largest);
System.out.println("The smallest integer: "+ smallest);
System.out.println("The average value is: "+ average);
}
}
可以使用Math.minint、int和Math.maxint、int分别查找最小值和最大值。你只需要一次计数。您可以通过使用声明多个int变量,我将使用++和+=使代码更加地道。您可以使用break终止循环。此外,不要执行整数数学来确定平均值。把这些放在一起可能看起来像
if (n > largest){
largest = n ;
}
if (n < smallest){
smallest = n ;
}
您可以通过在while条件循环中执行测试和赋值来消除中断。这是另一个相当常见的习惯用法
// integers by value
int n = in.nextInt();
int evenNumber = 0, oddNumber = 0, count = 0, total = 0;
int largest = n, smallest = n;
// start of loop
while (true) {
n = in.nextInt();
// end loop method
if (n == 0) {
break;
}
total += n;
count++;
// count of even numbers
if (n % 2 == 0) {
evenNumber++;
} else {
oddNumber++;
}
largest = Math.max(n, largest);
smallest = Math.min(n, smallest);
}
System.out.println("Total number of integers entered is: " + count);
System.out.println("Total even numbers entered: " + evenNumber);
System.out.println("Total odd numbers entered: " + oddNumber);
System.out.println("The largest integer: " + largest);
System.out.println("The smallest integer: " + smallest);
double average = total / (double) count;
System.out.println("The average value is: " + average);
可以使用Math.minint、int和Math.maxint、int分别查找最小值和最大值。你只需要一次计数。您可以通过使用声明多个int变量,我将使用++和+=使代码更加地道。您可以使用break终止循环。此外,不要执行整数数学来确定平均值。把这些放在一起可能看起来像
if (n > largest){
largest = n ;
}
if (n < smallest){
smallest = n ;
}
您可以通过在while条件循环中执行测试和赋值来消除中断。这是另一个相当常见的习惯用法
// integers by value
int n = in.nextInt();
int evenNumber = 0, oddNumber = 0, count = 0, total = 0;
int largest = n, smallest = n;
// start of loop
while (true) {
n = in.nextInt();
// end loop method
if (n == 0) {
break;
}
total += n;
count++;
// count of even numbers
if (n % 2 == 0) {
evenNumber++;
} else {
oddNumber++;
}
largest = Math.max(n, largest);
smallest = Math.min(n, smallest);
}
System.out.println("Total number of integers entered is: " + count);
System.out.println("Total even numbers entered: " + evenNumber);
System.out.println("Total odd numbers entered: " + oddNumber);
System.out.println("The largest integer: " + largest);
System.out.println("The smallest integer: " + smallest);
double average = total / (double) count;
System.out.println("The average value is: " + average);
另一种可能的解决方案是使用列表和集合:
另一种可能的解决方案是使用列表和集合: 错误是
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>();
int evenNumber=0;
int oddNumber=0;
int total=0;
int n;
System.out.print("Please enter integers (Zero to exit): ");
while(true){
n = in.nextInt();
if(n==0) {
break;
} else {
list.add(n);
total += n;
if(n%2==0){
evenNumber++;
} else {
oddNumber++;
}
}
}
Collections.sort(list);
System.out.println("Total number of integers entered is: "+ list.size());
System.out.println("Total even numbers entered: "+ evenNumber);
System.out.println("Total odd numbers entered: "+ oddNumber);
System.out.println("The largest integer: "+ list.get(list.size() - 1));
System.out.println("The smallest integer: "+ list.get(0));
System.out.println("The average value is: "+ total/list.size());
}
结合需要
int total = n;
int average = n;
并初始化0上的其余部分,并仅在循环中调用nextInt
由于平均值不在循环内部使用,因此可以在循环外部确定它。
你在做整数除法,所以可以考虑舍入:
int largest = Integer.MIN_VALUE;
int smallest = Integer.MAX_VALUE;
错误是
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>();
int evenNumber=0;
int oddNumber=0;
int total=0;
int n;
System.out.print("Please enter integers (Zero to exit): ");
while(true){
n = in.nextInt();
if(n==0) {
break;
} else {
list.add(n);
total += n;
if(n%2==0){
evenNumber++;
} else {
oddNumber++;
}
}
}
Collections.sort(list);
System.out.println("Total number of integers entered is: "+ list.size());
System.out.println("Total even numbers entered: "+ evenNumber);
System.out.println("Total odd numbers entered: "+ oddNumber);
System.out.println("The largest integer: "+ list.get(list.size() - 1));
System.out.println("The smallest integer: "+ list.get(0));
System.out.println("The average value is: "+ total/list.size());
}
结合需要
int total = n;
int average = n;
并初始化0上的其余部分,并仅在循环中调用nextInt
由于平均值不在循环内部使用,因此可以在循环外部确定它。
你在做整数除法,所以可以考虑舍入:
int largest = Integer.MIN_VALUE;
int smallest = Integer.MAX_VALUE;
当n==0时你也需要中断当n==0时你也需要中断我已经尝试了一切。。。除了使用TreeSet,它内置了自动跟踪最小值和最大值的功能。@Tim这是一种跟踪最大值和最小值的重量级方法!如果用户输入一个负整数,我只会得到最大整数,如果用户输入一个负整数,我只会得到最小整数。这意味着您使用了零作为max和min的初始值,这不是代码中显示的值。@而且,对于这个模型问题,这当然是过火了,但是在生产中,如果您已经使用了一个集合来存储数据,如果你想利用它的一些汇总方法,我可以证明切换到有序集是合理的。我已经尝试了所有的方法。。。除了使用TreeSet,它内置了自动跟踪最小值和最大值的功能。@Tim这是一种跟踪最大值和最小值的重量级方法!如果用户输入一个负整数,我只会得到最大整数,如果用户输入一个负整数,我只会得到最小整数。这意味着您使用了零作为max和min的初始值,这不是代码中显示的值。@而且,对于这个模型问题,这当然是过火了,但是在生产中,如果您已经使用了一个集合来存储数据,如果你想利用它的一些总结方法,我可以证明切换到有序集是合理的。谢谢你,先生,你真的简化了这一点,我花了两天的时间试图弄清楚。谢谢你,先生,你真的简化了这一点,我花了两天的时间试图弄清楚。