Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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

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
Java 在使用for循环和switch语句修改字符串后,返回字符串时遇到问题 公共静态字符串八进制等价(字符串二进制输入){ 字符串octalOutput=“”; for(int counter=binaryInput.length();counter_Java_Loops_Switch Statement - Fatal编程技术网

Java 在使用for循环和switch语句修改字符串后,返回字符串时遇到问题 公共静态字符串八进制等价(字符串二进制输入){ 字符串octalOutput=“”; for(int counter=binaryInput.length();counter

Java 在使用for循环和switch语句修改字符串后,返回字符串时遇到问题 公共静态字符串八进制等价(字符串二进制输入){ 字符串octalOutput=“”; for(int counter=binaryInput.length();counter,java,loops,switch-statement,Java,Loops,Switch Statement,counter 2是否比binaryInput.length大?如果否,那么这就是答案。for循环永远不会被命中,所以字符串永远不会改变 另外,看起来您真正想要做的就是在0和3之间对binaryInput进行子串,这根本不需要for循环。请尝试类似的操作,也许: public static String octalEquivalent(String binaryInput) { String octalOutput =" "; for(int counter=binaryI

counter 2是否比binaryInput.length大?如果否,那么这就是答案。for循环永远不会被命中,所以字符串永远不会改变

另外,看起来您真正想要做的就是在0和3之间对binaryInput进行子串,这根本不需要for循环。请尝试类似的操作,也许:

  public static String octalEquivalent(String binaryInput) {

    String octalOutput =" ";
    for(int counter=binaryInput.length(); counter<3; counter++)
    {
        binaryInput= "0"+binaryInput;
    }
    for(int counter=binaryInput.length(); counter%3==1; counter++)
    {
        binaryInput= "0"+binaryInput;
    }
    for (int counter1=0, counter2=3; counter2<=binaryInput.length(); counter1+= 3, counter2+=3)
    {


        String temp=binaryInput.substring(counter1,counter2);
        switch (temp){
        case "000": octalOutput = octalOutput+"0";
        break;
        case "001": octalOutput = octalOutput+"1";
        break;
        case "010": octalOutput = octalOutput+"2";
        break;
        case "011": octalOutput = octalOutput+"3";
        break;
        case "100": octalOutput = octalOutput+"4";
        break;
        case "101": octalOutput = octalOutput+"5";
        break;
        case "110": octalOutput = octalOutput+"6";
        break;
        case "111": octalOutput = octalOutput+"7";
        break;
        }
    }


    return(octalOutput);        
}

除非我遗漏了什么,否则我建议将二进制输入转换为数字,然后将其转换为八进制
字符串

String temp="";
    temp=binaryInput.substring(0,3);
    switch (temp){
    case "000": octalOutput = octalOutput+"0";
    break;
    case "001": octalOutput = octalOutput+"1";
    break;
    case "010": octalOutput = octalOutput+"2";
    break;
    case "011": octalOutput = octalOutput+"3";
    break;
    case "100": octalOutput = octalOutput+"4";
    break;
    case "101": octalOutput = octalOutput+"5";
    break;
    case "110": octalOutput = octalOutput+"6";
    break;
    case "111": octalOutput = octalOutput+"7";
    break;
    }
公共静态字符串八进制等价(字符串二进制输入){
字符串octalOutput=“”;

for(int counter=binaryInput.length();counter第二个for的用途是什么?Java 1.8是否允许
String
作为
switch
语句的参数?Java 1.8(或更早版本)向开关添加了字符串。我怀疑问题在于返回。很可能您不是因为其他问题而修改了
octalOutput
。@erhun第二个for循环是让二进制数可以被3整除,这样我就可以在3中提取部分,在第三个for循环中将其转换为八进制。这不是答案,应该是commentExpanded在我的原始答案上。我觉得这足以让他朝着正确的方向前进。我明白你的意思@iByrd92。我修改了我的代码,但仍然没有得到正确的返回。我试图修改二进制数字的任何长度。这意味着我希望代码能够转换二进制数,如01101011011到八进制。这就是为什么我有for循环,这也是第三个循环之前的两个for循环的作用。它们在那里,所以我可以让二进制被3整除,这样第三个for循环就可以正常工作。@GraysonWood,你知道你也在重置for循环之间的长度变量吗?还有,在你的thi上对于循环,似乎计数器2比它好。原因是,如果它是一个像011011011这样的数字,那么它的长度不可能小于3,计数器2从3开始。
public static String octalEquivalent(String binaryInput) {
    return Integer.toOctalString(Integer.parseInt(binaryInput, 2));
}
public static String octalEquivalent(String binaryInput) {

    String octalOutput =" ";
    for(int counter=binaryInput.length(); counter<3; counter++)
    {
        binaryInput= "0"+binaryInput;
    }

    while(binaryInput.length()%3 != 0)
    {
        binaryInput= "0"+binaryInput;
    }
    for (int counter1=0, counter2=3; counter2<=binaryInput.length(); counter1+= 3, counter2+=3)
    {


        String temp=binaryInput.substring(counter1,counter2);
        switch (temp){
        case "000": octalOutput = octalOutput+"0";
        break;
        case "001": octalOutput = octalOutput+"1";
        break;
        case "010": octalOutput = octalOutput+"2";
        break;
        case "011": octalOutput = octalOutput+"3";
        break;
        case "100": octalOutput = octalOutput+"4";
        break;
        case "101": octalOutput = octalOutput+"5";
        break;
        case "110": octalOutput = octalOutput+"6";
        break;
        case "111": octalOutput = octalOutput+"7";
        break;
        }
    }


    return(octalOutput);        
}