2012-04-01 1 views
0

数字の場所を特定し、実行するループの数を決定するにはどうすればよいですか?例えばJavaで数字の '場所'を取得する方法(例:数万、数千など)

私は、配列int[] a= {123,342,122,333,9909}int max = a.getMax()を持っている場合、我々は、私は千番目の場所である9909の数の桁値を、取得したい値9909.を取得します。例えば

...ここ

(number place value,number of loop to run) 

(one,1 time) 
(tenth,2 time) 
(hundred,3 time) 
(thousand,4 time) 
(ten thousand,5 time) 
(hundred thousand,6 time) 

public static int getMax(int[] t,int n){ 
    int maximum = t[0]; // first value of the array 
    int index = 0; 
    int div=1; 
    int numSpace=0; 
    int valueTester=34; 
    boolean done=false; 

    for (int i=1; i<n; i++) { 
     if (t[i] > maximum) { 
     maximum = t[i]; // maximum 
     index = i; // comparing index 
     } 
    } 

    while(done==false){ 
     if (valueTester==0){ 
      done=true; 
      } 
      else{ 
      valueTester=(maximum/div) % 10; 
      div=div*10; 
      numSpace++; 
      } 
     } 

    return numSpace; 
    } 

    } 
+1

あなたは可能性があなたの質問をフォーマットするには、少なくとも試みを。 –

答えて

10

対数を使用できます。

double[] values = {4, 77, 234, 4563, 13467, 635789}; 
    for(int i = 0; i < values.length; i++) 
    { 
     double tenthPower = Math.floor(Math.log10(values[i])); 
     double place = Math.pow(10, tenthPower); 
     System.out.println(place); 
    }   
+0

ありがとうございます。私はちょうどdouble tenthPower = Math.floor(Math.log10(values [i]))が必要です。 –

+0

あなたは大歓迎です。 – Brian

-2
int a = 9909; 

switch(a) 
{ 
    case a < 10: 
    //ones place 
    break; 
    case a < 100: 
    //hundreds place 
    break; 
    //etc..... 
} 

...それは整数の間にゼロを満たしたときしかし、それは失敗し、私のコードであると思います、このことができます。

+0

ええ、これは値が小さいと助けになるかもしれませんが、私の割り当てでは、Int値の中で最大の数値である乱数を扱っています。その場合、私たちはたくさんのケースと休憩を取るでしょう。それ以外の方法はありますか?> –

+0

@YuvinNgあなたの質問に入力がどのくらいあるかは言及していないので、わかりませんでした。多数の場合は、それらをStringオブジェクトに変換してlengthプロパティをテストするのが最も簡単でしょう。 –

+0

oh。文字列は方法です。ありがとうが、それは唯一の方法ですか? –

0

数値の場所を特定するには、整数をStringに変換し、その長さを取得します。例えば

...

int[] a= {123,342,122,333,9909}; 
int maxNumber = a.getMax(); // will return '9909' 
int numberPlace = (new Integer(maxNumber)).toString().length; // will return '4' 

は、その後、あなたは、このような

String[] placeNames = new String[]{"zero","ones","tens","hundreds","thousands"}; 
String placeString = placeNames[numberPlace]; // will return "thousands" 

...と、場所のための英語の値を取得する必要があり、これは、あなたが求めているものすべてですか?あなたの質問の残りを理解しているかわからない場合

+0

申し訳ありませんが、私のコードabit遅れて投稿する...しかし、コードの最初の部分は参考になるかもしれません..私は最初に試してみます。 –

+0

そこにはint型を文字列に変換して文字列を整数型にキャストする必要はありません。 –

+0

実際に起こっていることはありません。あなたはそれが 'length'を得るために' String'である必要があります - あなたは 'int'の長さを得ることができません。その行の短縮形は 'int numberPlace =(" "+ maxNumber).length;'ですが、それでもバックグラウンドで同じことを行います – wattostudios

1

次のコードスニペットは、整数で百分の要素の値を取得するために使用することができます。

public int place(int i) { 
    int j=(i/100)%10; 
    return j; 
} 
関連する問題