将 C++ 转换为 Java - 小型项目

Convert C++ to Java - Small Project

我需要帮助将此代码块转换为 java。我以前从未使用过 C++,所以这是一项任务。这是 C++ 代码:

#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。我这样做是为了做作业,我想回答的问题是:

假设一个系统有一个 32 位的虚拟地址,页面大小为 4 KB。编写一个程序,在命令行上传递一个虚拟地址(十进制),并让它输出给定地址的页码和偏移量。

例如,您的程序将 运行 如下: yourprogram 19986

你的程序会输出:

地址19986包含:页码=4偏移量=3602

编写此程序需要使用适当的数据类型来存储 32 位。也使用无符号数据类型。

如有任何帮助,我们将不胜感激。

在您的 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]);

地址将是命令行的输入,在给出的示例中 address = 19986