Java 使用模从长序列中获取位数的方法
我的助教告诉我,如果我想计算一个长变量的长度,我可以创建一个使用模的方法。据我所知,他说我需要继续使用模,直到长为0。这是我现在的想法,但我很迷茫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/
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
是负数,它总是返回零。