2015-11-10 61 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'数组。 –