有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java for正在跳过的循环

import java.lang.Integer;
import java.util.Arrays;

public class Decimal {

    //initialize intance variables
    private int decimal;
    private String hex;

    public static void toHex(String s) {
        int decimal = Integer.parseInt(s); //converts the s string into an int for binary conversion. 
        String hex = null;
        int[] binNum = new int[16];
        int[] binNumNibble = new int[4]; //A nibble is four bits.
        int nibbleTot = 0;
        char hexDig = '\0';
        char[] cvtdHex = new char[4];
        StringBuffer result = new StringBuffer();

        for(int a = 32768; a == 1; a /= 2) { //32768 is the value of the largest bit.
            int b = 0;//Will top at 15 at the end of the for loop. 15 references the last  spot in the binNum array. 
            if(decimal > a) {
                decimal -= a;
                binNum[b++] = 1;//Arrays have a default value of zero to all elements.     This provides a parsed binary number.
            }
        }

        for(int a = 0; a == 15; a += 3) {
            //Copies pieces of the binary number to the binNumNibble array. .arraycopy is used in java 1.5 and lower.
            //Arrays.copyOfRange is used in java 1.5 and higher.
            System.arraycopy(binNum, a, binNumNibble, 0, 4);

            for(int b = 8; b == 1; a += 3) {
                int c = 0;
                nibbleTot += binNumNibble[c++];

                //Converts the single hex value into a hex digit.
                if(nibbleTot >= 1 && nibbleTot <= 9) {
                    hexDig += nibbleTot;
                } else if(nibbleTot == 10) {
                    hexDig = 'A';
                } else if(nibbleTot == 11) {
                    hexDig = 'B';
                } else if(nibbleTot == 12) {
                    hexDig = 'C';
                } else if(nibbleTot == 13) {
                    hexDig = 'D';
                } else if(nibbleTot == 14) {
                    hexDig = 'E';
                } else if(nibbleTot == 15) {
                    hexDig = 'F';
                }

                cvtdHex[c++] = hexDig;
            }
        }
        //return hex = new String(cvtdHex);
        hex = new String(cvtdHex);
        System.out.print("Hex: " + hex);
    }
}

我似乎不明白为什么变量hex作为空白变量返回。我一直在使用这个系统。出来打印();在每个for循环中,都没有使用它们,这给我的印象是for循环被完全跳过了,但我不明白为什么,我有时间限制

非常感谢您的帮助,但请不要只是粘贴代码。我需要在我的计算机科学课上理解这一点


共 (3) 个答案

  1. # 1 楼答案

    怎么样

    String.format("%h", 256)
    
  2. # 2 楼答案

    由于双==,因此for loops不会执行

  3. # 3 楼答案

    是的,将跳过for循环,因为for语句的第二部分不是break条件,而是必须完全填充才能运行循环的条件

    事实并非如此

    for(a = 0; a == 15; a += 3)
    

    但是

    for(a = 0; a <= 15; a += 3)
    

    等等