gpt4 book ai didi

java - 将数组的一部分复制到另一个数组 - Java

转载 作者:行者123 更新时间:2023-12-01 15:28:56 25 4
gpt4 key购买 nike

将一个数组的一部分复制到另一个数组时,我仍然遇到问题。我试图检查数组的内容以确保一切正常,但所有内容都打印为零。我首先将数组初始化为零,随着程序中发生的事情,不同的部分被复制到名为 dataBlock 的数组中,该数组是名为 cache 的数组的一部分,该数组由名为 SlotNodes 的对象组成。

事情在我的模拟器类中初始化

  public static SlotNode[] cache = new SlotNode[8];
public static int cacheSize = 8;
public static int memSize = 2048;
public static byte[] main_Mem = new byte[memSize];

有一个菜单,如果我们尝试读取地址,我们会剖析该地址:

      public static void readAddress() {
System.out.println("What address? ");
//String tmpAddress = keyboard.next();
address = keyboard.nextInt(16);

System.out.println("After parsing the string to base 16, you get ");
System.out.printf("%X", 0xFF & address);
System.out.println(" ");
//get offset
offset = address & 0x7;
System.out.println(offset);
//get tag
int tmpTag = address >> 6;
tag = tmpTag & 0x1F;
System.out.println(tag);
//get slot
slot = (address >> 3) & 0x7;
System.out.println(slot);

//go to slot number and see what valid bit is
if (cache[slot].getValidBit() == 0) {

当validbit为0时,我们必须将main_Mem数组中的数据 block 复制到缓存数组的dataBlock数组中。

System.out.println("Miss");
//copy block in main memory, 8 bytes
//address/8 gets address of block in mainmemory
int startAddress = address & 0x7F8;

System.out.println("The start address of " + address + " should be " + startAddress);
cache[slot].setValidBit(1);
cache[slot].setTag(tag);
//Now need to copy from startAddress plus 8 bytes into cache[slot]
while (cacheSize < 8){
System.arraycopy(main_Mem, startAddress, cache[slot].dataBlock, 0, cacheSize);
}

System.out.println();
System.out.println("The block of data is: ");
for (int i=0; i<8; i++) {
for (int j=0; j<7; j++){
System.out.println("Value: " + cache[i].dataBlock[j]);
}
}

}

我设置为“1”的有效位可以正常打印。看起来 main_mem 数组中的数字没有被复制到它们需要的位置。 :(

最佳答案

您将cacheSize 初始化为8,但仅在cacheSize < 8 时进行复制。事实并非如此。

很抱歉对此进行抨击,但这是您应该通过使用调试器并单步执行程序来找到的东西,而不是让人们通过阅读代码来调试您的代码。

关于java - 将数组的一部分复制到另一个数组 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com