-5

次の問題が与えられました。

ユーザーに 10 個の正の整数を入力し、最大値とその出現回数を見つけるように求める Java プログラムを作成します。ヒント: 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
4

1 に答える 1

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");}}

2 番目のエラー:

「最高」の数を増やしてelse if(y==f) H++;います:-しかし、それが変化したときに何が起こるべきかを考慮していませんか? したがって、1,1,1,1,1,1,2 と入力すると、「2 が 7 回出現する」ことになります。これは誤りです。

新しい最高数が記録されたら、「最高発生回数」を「リセット」(「1」に設定) する必要があります。

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

3 番目のエラー: 上記で修正済み: すべきではあり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");
  }
}

はるかに読みやすいですね。

于 2013-10-21T20:07:24.917 に答える