Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用模从长序列中获取位数的方法_Java - Fatal编程技术网

Java 使用模从长序列中获取位数的方法

Java 使用模从长序列中获取位数的方法,java,Java,我的助教告诉我,如果我想计算一个长变量的长度,我可以创建一个使用模的方法。据我所知,他说我需要继续使用模,直到长为0。这是我现在的想法,但我很迷茫 public static int inputSize(long cc_num) { int count = 0; while( cc_num > 0) { count += 1; cc_num = cc_num % 10; } } 这几乎是正确的。 只需将%运算符替换为/运算符: cc_num/

我的助教告诉我,如果我想计算一个长变量的长度,我可以创建一个使用模的方法。据我所知,他说我需要继续使用模,直到长为0。这是我现在的想法,但我很迷茫

public static int inputSize(long cc_num)
{
  int count = 0;
  while( cc_num > 0) 
    {
     count += 1;
     cc_num = cc_num % 10;
    }
}
这几乎是正确的。 只需将%运算符替换为/运算符: cc_num/=10;
这应该行得通:)

如果要限制可能的比较次数:

public static int inputSize(long cc_num)
{
    if(cc_num < 0)  // check for negative numbers
       cc_num = -cc_num;
    int count = 1;
    if(cc_num >= 10000000000000000L)
    {
        count += 16;
        cc_num /= 10000000000000000L;
    }
    if(cc_num >= 100000000)
    {
        count += 8;
        cc_num /= 100000000;
    }
    if(cc_num >= 10000)
    {
        count += 4;
        cc_num /= 10000;
    }
    if(cc_num >= 100)
    {
        count += 2;
        cc_num /= 100;
    }
    if(cc_num >= 10)
    {
        count ++;
    }
    return count;
}
public static int inputSize(长cc_num)
{
if(cc_num<0)//检查负数
cc_num=-cc_num;
整数计数=1;
如果(cc_num>=100000000000000L)
{
计数+=16;
cc_num/=100000000000000L;
}
如果(cc_num>=100000000)
{
计数+=8;
cc_num/=100000000;
}
如果(cc_num>=10000)
{
计数+=4;
cc_num/=10000;
}
如果(cc_num>=100)
{
计数+=2;
cc_num/=100;
}
如果(cc_num>=10)
{
计数++;
}
返回计数;
}

这是您的代码,但有一些小改动:

public static boolean validSize(long cc_num) {
  int count = 0;
  if (cc_num < 0)  cc_num *= -1; // fix negative number

  while (cc_num > 0) {
    count++;
    cc_num = cc_num / 10;
  }

  //checks if length of long is correct
  return count == 15 || count == 16;
}

public静态布尔值有效大小(长cc_num){
整数计数=0;
如果(cc_num<0)cc_num*=-1;//修复负数
而(cc_num>0){
计数++;
cc_num=cc_num/10;
}
//检查long的长度是否正确
返回计数=15 | |计数=16;
}

让我知道这对你是否有效。

你的ta可能是指除法,而不是模(你的方法需要返回一些东西)。
公共静态布尔有效值大小(long cc_num){int count=0;boolean valid=false;//检查长时间的大小(cc_num>0){count++;cc_num=cc_num/10;}//如果(count==15 | | count==16)valid=true,则检查long的长度是否正确;返回valid;}
那么@Pshemo这个方法正确吗?^很抱歉,我不知道如何设置注释的格式您无法正确设置注释中的代码格式,这就是为什么要避免将代码作为注释发布(特别是如果它有
//注释
部分)。无论如何,您提供的代码似乎不会返回long的长度,我不确定它的用途是什么。是否要确保长度为
15
16
?如果是这样的话,我可能会创建两个方法,第一个是您发布的,第二个是
publicstaticvalidsize(longcc_num){int size=inputSize(cc_num);returnsize==15 | | size==16;}
。可能需要澄清的是,您需要以10为基数表示的位数。如果
cc_num
是负数,它总是返回零。