我應該通過這些數字的陣列來準備,7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1然後把第一(非重複數)轉換成只包含5個數字的較小陣列。MRU頁面置換的Java
所以第5之後是,它看起來像7 0 1 2 3(0以來已經在陣列中存在的話)。
那麼它應該進行搜索,並且每個元件在較大陣列的其餘部分與每一個元件中較小的一個進行比較。 Ť
較大陣列中的下一個元素是0時,程序需要比較0到較小數組中的所有元素。
如果較小數組中存在的元素,它的只是應該設置一個MRU變量等於較小陣列內存在的元素的索引。
如果該號碼不存在,說喜歡下運行後,4.然後程序會在與數字4
我有兩個問題,MRU變量替換元素,
- 這個程序只是吐出我原來的數字和IDK,爲什麼?
- 我在哪裏何去何從?
我已經爲此工作了很多天,經歷了無數的變化。它已經過了截止日期,但我想學習如何做到這一點。
import java.util.*;
import java.io.*;
public class MRUPageReplacement
{
public static void main(String [] args)
{
//======== Variables ==============================================
ArrayList<Integer>MRUList = new ArrayList<Integer>();
int [] frames = {7,0,1,2,3};
int i,j,MRU;
String line;
//======== File Reader ============================================
try
{
FileReader reader = new FileReader("MRU.txt");
BufferedReader r = new BufferedReader(reader);
while ((line=r.readLine())!=null)
{
MRUList.add(Integer.parseInt(line));
}
}
catch(Exception e)
{
System.out.println("File Not Found");
}
int[] array = new int [MRUList.size()];
for (i =0; i < MRUList.size(); i++)
{
array[i] = MRUList.get(i);
}
//======== Fill Arrays ==============================================
//======== Compare ==============================================
for(i=0; i<array.length; i++)
{ // Iterate through the array
for(j=0; j<frames.length; j++)
{ // Iterate through frames
if(array[i] == frames[j])
{
// if the element is in frames
MRU = j;
}
else {
// if the element is not in frames
frames[MRU] = array[i];
}
}
}
/*======== Print ==============================================
for(i=0; i<frames.length; i++)
{
System.out.println("frames : " + frames[i]);
}
*/
}
}
// Sample output
frames : 7
frames : 0
frames : 1
frames : 2
frames : 3
frames : 0
frames : 0
frames : 1
frames : 2
frames : 3
frames : 0
frames : 1
frames : 1
frames : 2
frames : 3
frames : 0
frames : 1
frames : 2
frames : 2
frames : 3
frames : 0
frames : 1
frames : 2
frames : 2
frames : 3
frames : 3
frames : 1
frames : 2
frames : 2
在附註中,當我嘗試打印數組而不是數字時,它給出了這個:[I @ 565b540e。那是因爲它正在打印索引?
最後,我想在每次運行時通過打印出幀陣列。像: 運行1:幀= {70123}。
編輯:好了,所以之後,從貓頭鷹一些驚人的幫助下,即時現在遇到了我之前是有這個主要問題。它只識別第一次或第二次迭代,因爲第二個數字應該是零,所以我不能分辨出來。這是搞亂的部分:
for(i=0; i<array.length; i++)
{ // Iterate through Array
for(j=0; j<frames.length; j++)
{ // Iterate through Frames
if(array[i] == frames[j])
{
// Item from Array exists in Frames
MRU = j;
MRU_found = true;
}
}
if(!MRU_found)
{
frames[MRU] = array[i];
}
我已經從它的角度夫婦,但似乎沒有工作。
太感謝你了!這幫助了一噸!現在我唯一的問題是它沒有識別任何不同的數字,它每次都打印出相同的東西。我要放置一些照片,看看它搞亂了什麼。希望這會有所幫助:D – Josh