2015-11-10 62 views
-2

我需要幫助將此代碼塊轉換爲java。我從來沒有使用過C++,因此這是一項任務。這是C++代碼:將C++轉換爲Java - 小型項目

#include<iostream> 
#include<stdlib.h> 
#define PAGE_SIZE 4096 
using namespace std; 

int main(int argc, char **argv){ 
if(argc<2){ 
cout<<"Enter the address: "; 
return -1; 
} 
unsigned int address = atoi(argv[1]); 
unsigned int page_number = address/PAGE_SIZE; 
unsigned int offset = address%PAGE_SIZE; 
cout<<"the address "<<address<<"contains: Page number = "<<page_number<<"And off set = "<<offset<<endl; 
system("pause"); 
} 

這是我迄今爲止在Java:

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int pageSize = 4096; 
    int x = 0; 
    int address = atoi(argv[1]); 
    int pageNumber = address/pageSize; 
    int offset = address % pageSize; 
    if (x < 2) { 
     System.out.println("Enter the address: "); 
     x = in.nextInt(); 
    } 
    System.out.println("The address " + address + " contains: Page number = " + pageNumber + " And off set = " + offset); 
} 

我不知道什麼 「的argv [1]」 的意思在C++中,所以我不不知道如何將它轉換爲java。我正在做這個功課,我試圖回答的問題是:

假設一個系統具有一個4-KB頁面大小的32位虛擬地址。編寫一個在命令行上傳遞虛擬地址(十進制)的程序,並讓它輸出給定地址的頁碼和偏移量。

舉個例子,你的程序將運行如下:yourprogram 19986

你的程序將輸出:

地址19986包含:頁碼= 4偏移= 3602

編寫這個程序將要求使用適當的數據類型來存儲32位。也使用無符號數據類型類型。

對此的任何幫助將非常讚賞。

+4

'的例子;'...不聞起來像C,而它是C++。 –

+0

Downvoted是因爲Google搜索「C++中的argv是什麼」在標註框中產生了確切的解釋。 – chrylis

回答

1

在您的java程序中,Scanner in變量將讀取輸入,因此您應該將輸入添加到地址中。計算必須在輸入之後進行,因爲當用戶輸入結果時,變量將賦值。

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int pageSize = 4096; 
    int address = 0; 
    if (address < 2) { 
     System.out.println("Enter the address: "); 
     address = in.nextInt(); 
    } 
    int pageNumber = address/pageSize; 
    int offset = address % pageSize; 
    System.out.println("The address " + address + " contains: Page number = " + pageNumber + " And off set = " + offset); 
} 

在C++ argv意味着輸入將是第一個命令行參數,它將是一個整數。

在你的C++程序:

unsigned int address = atoi(argv[1]); 

地址將在命令行輸入,在使用空間std給出address = 19986

+0

非常感謝! – user2113442

+0

OP的原始代碼在命令行上使用args,但是該轉換從標準輸入讀取它們。要讀取java中的命令行參數,應該使用傳遞給'main()'的'args'數組。 –