简体   繁体   English

从解析字符串到双精度的转换返回0.0:

[英]Conversion from parsing a String to double is returning 0.0:

This is a follow up on the last question I made regarding this topic. 这是我就该主题提出的最后一个问题的后续措施。 It's a different issue though. 但是,这是一个不同的问题。

My code is working, except it's copying some sort of address using the copyOfRange. 我的代码正常工作,除了它使用copyOfRange复制某种地址。 It always returns 0.0 due to an address of some sort, instead of the section of the array getBits. 由于某种地址,它总是返回0.0,而不是数组getBits的部分。

Can someone please scan this is and make a suggestion? 有人可以扫描一下并提出建议吗? I am going crazy over this (it's not an assignment). 我为此感到疯狂(这不是一项任务)。

package runTests;

import java.util.Arrays;

public class runTestGetBinaryStrands {
    protected static int getBits[] = {1,0,1,1,0,1,0,0,0,1,1,0,1,0,1,0};
    double numerator, denominator, x, y;

    public static void main (String[] args){
        runTestGetBinaryStrands test = new runTestGetBinaryStrands();
        test.getNumber(null, getBits);
    }
    /*NOTE OF THIS FORLOOP:     * Divided the bits array in half & convert two different binary values to a string  * I parsed the string to an int value, which can be put saved to a double and be treated like a decimal value.  * I got the first 8 elements and stashed them into numerator, and did the same for denominator for the remaining array bits.    * * The chromosome has one binary string, made up of a bunch of smaller parts.* You use getNumber in the chromosome to get out the values of the parts.     **/     

    public void getNumber(String convert, int[] tempBinary){       
        for (int i = 0; i < getBits.length; i++){
            for(int j = 0; j < getBits.length; j++){ //start at index 0 to 7 = 8.
                tempBinary = Arrays.copyOfRange(getBits, 0, 7); //Get first set of 8 elements.
                convert = tempBinary.toString();
                System.out.println(convert);
                try{
                    numerator = Integer.parseInt(convert); //converts string to one whole section in
                }catch (NumberFormatException ex){
                }
                System.out.println("See Numerator's value: " + numerator);                          
                tempBinary= Arrays.copyOfRange(getBits, 8, 15); //Get Second set of 8 elements.
                convert = tempBinary.toString();
                try{
                    denominator = Integer.parseInt(convert); //converts string to one whole section in
                }
                catch (NumberFormatException ex){
                }                           
                System.out.println("See Denominator's value: " + denominator);
            } 
        } 
    } 
}

Replace the lines convert = tempBinary.toString(); 替换行convert = tempBinary.toString(); with: 有:

    convert = "";
    for(int bin : tempBinary){
      convert += bin;
    }

That should get your conversion working. 那应该使您的转换正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM