English 中文(简体)
查找 Java 数字中最左的位数
原标题:Finding the most left digit in a number with Java

我必须在随机生成的数字中找到最左的位数( 例如: 46891 - & gt; 4), 无论数字是多少, 我总是得到零。 这里我尝试的代码之一 :

int num1 = (int)((Math.random()*100000)+1);

while((Math.floor(num1/10))>0)
    {
        num1 = (int)Math.floor(num1/10);
    }

    System.out.println("Left digit: " + num1);

我试图使用 Integer.parseInt ,但我犯了这个错误,很明显: Integer 类型中的方法解析Int( String) 不适用于参数(int)。

我做错什么了,我怎样才能让它起作用?

谢谢!

最佳回答

不如这样:

final Random r=new Random();
final int t=r.nextInt(100000)+1;
// naive way:
final String s=Integer.toString(t);
System.out.println("left digit is:"+s.charAt(0));
// "math" way:
int temp=t;
while(temp>=10)
  temp/=10;
System.out.println("left digit is:"+temp);
问题回答

整数分隔除去分数部分, 所以只需要一个简单的循环 :

int num = (int)((Math.random()*100000)+1);
for ( ; num >= 10 ; num /= 10);
System.out.println(num);

您几乎就在那里了! 问题是, num1 将是一个数字, 而不是字符, 尽管它们基本上是一样的。 将它转换成字符串, 使用 < code>. to String () 或使用 < code> System.out.format 和 /code > 格式字符串。

EDIT: 永远不要介意, 我错了。 您正在做循环, 而 num1 大于0, 问题是当 num1 是 0 时这个循环退出。 在此情况下, 您需要先打破一个, 因此我只需要将测试修改为 < code\\ gt; =10 。 在这种情况下, 您可以确保您有一个根据问题的性质必须大于 0 的位数 。

我用的是基于你的代码

int num1 = (int)((Math.random()*100000)+1);
System.out.println("Randomed number: " + num1);
while((num1/10)>0)
        num1 = num1/10;
System.out.println("Left digit: " + num1);

对我很好

无需使用 Math. 底线 作为整数分割回合自动下移 。

您想要在循环中检查 num1 & gt; 9 , 只在数字至少为 10 的情况下进行分隔 。

我测试了你的代码,它也对我有用,没有修改...





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...