搜索和计算最大值

时间:2013-10-21 20:03:01

标签: java

我遇到了以下问题:

编写一个Java程序,提示用户输入10个正整数,然后查找最大值及其出现次数。提示:使用While循环。

  

样品运行:请输入10个数字:

     

1

     

2

     

46

     

1

     

0

     

5

     

46

     

46

     

6

     

27

     

最大值是:46,它发生3次。

     

以下是我的解决方案:

     import java.util.*;
      public class numbers{


       public static void main(String args[]){;
          Scanner input=new Scanner (System.in);


            int n=0;
             int H=1;
            int y=0;
        System.out.println("please Enter 10 numbers:");
         while (n<10){
          int f=input.nextInt();

             if ( f>n)
              y=f;

           else if(y==f)
               H++;}

     System.out.println("the biggest value is: "+
                        n+" and it is occurs "+
                        H+" times");
      }}

但问题结果不正确:“(

我该怎么办?!


谢谢,但它使无限循环!!

      import java.util.*;
      public class numbers{


     public static void main(String args[]){;
      Scanner input=new Scanner (System.in);


      int n=0;
      int H=0;
      int y=0;
       System.out.println("please Enter 10 numbers:");
        while (n<10){
        int f=input.nextInt();

         if ( f>y){
         y=f;
         H=1;}
       else if(y==f){
          H++;
          n++; }
             }
        System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");
           }}

最后我发现了我的错误“感谢您的帮助”

纠正我的代码后

       import java.util.*;
       public class numbers{
       //main method

         public static void main(String args[]){;
         Scanner input=new Scanner (System.in);


         int n=0;
         int H=0;
         int y=0;
        System.out.println("please Enter 10 numbers:");
        while (n<10){
        int f=input.nextInt();//f the numbers

        if(y==f)
       H++;//to count how many repeat


        if ( f>y){
      y=f;// if numbers greater than y put value of f in y 

       H=1;}
       n++;//to update counter
         }
       System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");
       }// end main
       }// end class

1 个答案:

答案 0 :(得分:2)

第一个错误:

System.out.println("the biggest value is: "+n+" and it is occurs "+H+" times");}}

n是您的TryCount。应该是:

System.out.println("the biggest value is: "+y+" and it is occurs "+H+" times");}}

第二个错误:

您正在增加“最高”数字的计数:else if(y==f) H++; - 但是您没有考虑,当发生变化时会发生什么?所以,输入1,1,1,1,1,1,2会给你“7次出现2” - 这是错误的。

当记录新的最高号码时,您需要“重置”(设置为“1”)“最高 - 出现次数”:

if ( f>y){
   y=f;
   H = 1;
}

第三个错误:上面已经修正:它应该是f>y而不是f>H

提示:提供您的变量有意义的名称 - 所以你不要轻易搞砸:

import java.util.*;
public class numbers{

  public static void main(String args[]){;
    Scanner input=new Scanner (System.in);

    int runs=0;
    int highestCount=0;
    int highestValue=0;

    System.out.println("please Enter 10 numbers:");
    while (runs<10){
      int inputValue=input.nextInt();

      if ( inputValue>highestValue){
        highestValue=inputValue;
        highestCount = 1;
      }

      else if(inputValue==highestValue){
        highestCount++;
      }
    }
    System.out.println("the biggest value is: "+highestValue+" and it is occurs "+highestCount+" times");
  }
}

更容易阅读,不是吗?