2012-04-06 93 views
0

我需要从这段代码中获得最大值,但它确实很棘手。任何人有任何建议?获取“用户输入的最大值”?

import java.util.Scanner; 
public class Test{ 
    public static void main(String args[]) 
    { 
     Scanner scan = new Scanner(System.in); 

     final int sentinel = 0; 
     int number; 
     int maxval = 0; 
     int count = 0; 

     System.out.println ("Enter a number: "); 

     number = scan.nextInt(); 
     while (number != sentinel) 
     { 
      count++; 
      System.out.println("Enter another number"); 
      number = scan.nextInt(); 
      maxval = number; 
     } 

     if (number > maxval) 
     { 
      maxval = number; 
      System.out.println ("The max value is " + maxval); 
     } 
    } 
} 
+0

删除'while'里面的'maxval = number'并在循环中获得条件语句 – mshsayem 2012-04-06 01:31:41

回答

1

您每次获得新号码时都会覆盖maxval变量。你必须做这样的事情

while (number != sentinel) 
{ 
    count++; 
    System.out.println("Enter another number"); 
    number = scan.nextInt(); 
    if (number > maxval && number != sentinel) //So you don't overwrite it when you get the sentinel character 
     maxval = number; 
} 
System.out.println ("The max value is " + maxval); 
+0

谢谢你们!绝对需要改进我的循环结构... – jerms246 2012-04-06 01:36:39

0

试试这个,这是一个有点简单,修复了代码的主要问题:比较number > maxval必须主循环中:

Scanner scan = new Scanner(System.in); 

    final int sentinel = 0; 
    int maxval = 0; 
    int number = 0; 

    do { 
     System.out.print("Enter a number: "); 
     number = scan.nextInt(); 
     if (number > maxval) 
      maxval = number; 
    } while (number != sentinel); 

    System.out.println("The max value is " + maxval);