Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Loops 是否允许循环将基数2转换为基数10?_Loops_For Loop_Base - Fatal编程技术网

Loops 是否允许循环将基数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) == '

因此,我的老师让我们使用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) == '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是基数。