Loops 是否允许循环将基数2转换为基数10?
因此,我的老师让我们使用for循环,我们的一项作业是制作一个for循环,将任何以2为基数的数字改为以10为基数。我将发布我到目前为止所做的事情。我只是在美联社计算机科学的代码将看起来业余Loops 是否允许循环将基数2转换为基数10?,loops,for-loop,base,Loops,For Loop,Base,因此,我的老师让我们使用for循环,我们的一项作业是制作一个for循环,将任何以2为基数的数字改为以10为基数。我将发布我到目前为止所做的事情。我只是在美联社计算机科学的代码将看起来业余 public long getBaseTen( ) { long ten=0; for (int i = 0; i < binary.length()-1; i++) { if (binary.charAt(binary.length()-i-1) == '
public long getBaseTen( )
{
long ten=0;
for (int i = 0; i < binary.length()-1; i++)
{
if (binary.charAt(binary.length()-i-1) == '0');
ten += 0;
if (binary.charAt(binary.length()-i-1) == '1');
ten += Math.pow(2, i);
}
return ten;
}
public long getBaseTen()
{
长十=0;
对于(int i=0;i
binary是一个字符串变量,它包含用户先前指定的基数2。我需要将这个以2为基数的字符串转换为以10为基数的字符串,并将该数字存储为长10。现在,无论何时调用此方法,根据字符串的长度,我总是得到相同的数字。如果字符串长度为2个字母,它将始终返回1;如果字符串长度为3个字母,它将始终返回3;如果字符串长度为4个字母,它将始终返回7,依此类推。非常感谢您的帮助。代码中的问题是,您的if语句提前关闭:
if (binary.charAt(binary.length()-i-1) == '0');
ten += 0;
应该是
if (binary.charAt(binary.length()-i-1) == '0'){
ten += 0;
}
当然,还有其他一些事情可以用不同的方式来完成,但你会发现这一点。删除“if”行末尾的分号。他们不应该在那里;他们被解释为
if(whatever)
; // null statement -- do nothing
(您也可以在由if控制的代码块周围添加大括号,但当您仅试图控制一条语句时,这是可选的。有些人总是使用大括号,但这在很大程度上取决于编码风格。)0和1的字符串遵循二次幂规则。最右边的值是2^0,然后是2^1 2^2,依此类推,每次指数加倍。知道了这一点,您可以创建一个简单的for循环来进行转换 例如:
int tens;
for(int i=1;i<binary.length()-1; i++){
tens += Math.pow(2,binary.length-i);
}
int-tens;
对于(inti=1;i您不需要使用一个if语句,您可以使用
public long getBaseTen()
{
long ten=0;
for (int i = 0; i < binary.length(); i++)
{
if (binary.charAt(i) == '1')
ten += Math.pow(2, binary.length()-i-1);
}
return ten;
}
public long getBaseTen()
{
长十=0;
对于(int i=0;i
注意,i
它也是错误的
你可以在这里看到它是如何工作的你是对的,那也会工作的,我选择告诉你用{
。更新以澄清。分号是问题所在。大括号有助于澄清和防止未来的错误,但是可选的,因为OP没有使用它们,所以我认为没有必要添加它们。De gustibus…我不敢相信我犯了这么明显的错误并且没有抓住它。这很尴尬。感谢你们两位!不用担心。if的C式语法-语句绝不是琐碎的。这就是我提倡总是将{}
与if
语句一起使用的另一个原因,因为开头的{
与if
在同一行,这会使这样的错误更加明显。(一个自动缩进的编辑器也会有帮助,因为它不会缩进10+=…
语句,所以它们看起来不正确。)(编程的“艺术”大约一半是避免愚蠢的错误。另一半是找到你没有避免的错误。)是的,这(可能)工作正常,结构紧凑,非常好。它可能不是很快,在某些情况下甚至可能是错误的。请注意,我pow(2,i)
可以替换为变量long factor
从1开始,然后每圈乘以2(不仅仅是char=='1')的回合。哦,在Integer
类Integer.parseInt(urString,2)
中有一个read方法,其中2是基数。