我编写了一个程序,将一组十进制数转换为一组罗马数字,用于1到9'999之间的数字,但是当我输出返回的String数组时,我只得到“Null”作为输出,我不知道为什么我想知道如何解决它。输出的第一个数字输出的数量与数组的长度相同,分别输入到我希望转换为罗马数字的十进制数。
import java.util.Scanner;
public class Roman {
public static void main(String [] args) {
Scanner cin = new Scanner(System.in);
int amount = cin.nextInt();
int [] sequence = new int[amount];
for (int i = 0; i < amount; ++i) sequence[i] = cin.nextInt();
String[] converted = new String[amount];
for (int i = 0; i < amount; ++i) System.out.println(converted[i]);
}
public static String[] conversion(int n, int[] decimals) {
String [] romanNumbers = new String[n];
for (int i = 0; i < n; ++i) romanNumbers[i] = "";
for (int i = 0; i < n; ++i) {
while (decimals[i] != 0) {
if (decimals[i] >= 1000) {
romanNumbers[i] += "M";
decimals[i] -= 1000;
}
else if (decimals[i] >= 890 && decimals[i] < 1000) {
romanNumbers[i] += "CM";
if (decimals[i] < 900) decimals[i] -= 890;
else decimals[i] -= 900;
}
else if (decimals[i] >= 500 && decimals[i] < 890) {
romanNumbers[i] += "D";
decimals[i] -= 500;
}
else if (decimals[i] >= 390 && decimals[i] < 500) {
romanNumbers[i] += "CD";
if (decimals[i] < 400) decimals[i] -= 390;
else decimals[i] -= 400;
}
else if (decimals[i] >= 100 && decimals[i] < 390) {
romanNumbers[i] += "C";
decimals[i] -= 100;
}
else if (decimals[i] >= 90 && decimals[i] < 100) {
romanNumbers[i] += "XC";
decimals[i] -= 90;
}
else if (decimals[i] >= 50 && decimals[i] < 90) {
romanNumbers[i] += "L";
decimals[i] -= 50;
}
else if (decimals[i] >= 40 && decimals[i] < 50) {
romanNumbers[i] += "XL";
decimals[i] -= 40;
}
else if (decimals[i] >= 10 && decimals[i] < 40) {
romanNumbers[i] += "X";
decimals[i] -= 10;
}
else if (decimals[i] < 10) {
switch (decimals[i]) {
case 1: romanNumbers[i] += "I"; --decimals[i]; break;
case 2: romanNumbers[i] += "II"; decimals[i] -= 2; break;
case 3: romanNumbers[i] += "III"; decimals[i] -= 3; break;
case 4: romanNumbers[i] += "IV"; decimals[i] -= 4; break;
case 5: romanNumbers[i] += "V"; decimals[i] -= 5; break;
case 6: romanNumbers[i] += "VI"; decimals[i] -= 6; break;
case 7: romanNumbers[i] += "VII"; decimals[i] -= 7; break;
case 8: romanNumbers[i] += "VIII"; decimals[i] -= 8; break;
case 9: romanNumbers[i] += "IX"; decimals[i] -= 9; break;
}
}
}
}
return romanNumbers;
}
}
发布于 2018-10-22 14:09:04
试试以下代码:
public static void main(String [] args) {
Scanner cin = new Scanner(System.in);
int amount = cin.nextInt();
int [] sequence = new int[amount];
for (int i = 0; i < amount; ++i) sequence[i] = cin.nextInt();
String[] converted = new String[amount];
converted = conversion(amount, sequence);
for (int i = 0; i < amount; ++i) System.out.println(converted[i]);
}
public static String[] conversion(int n, int[] decimals) {
String [] romanNumbers = new String[n];
for (int i = 0; i < n; ++i) romanNumbers[i] = "";
for (int i = 0; i < n; ++i) {
while (decimals[i] != 0) {
if (decimals[i] >= 1000) {
romanNumbers[i] += "M";
decimals[i] -= 1000;
}
else if (decimals[i] >= 890 && decimals[i] < 1000) {
romanNumbers[i] += "CM";
if (decimals[i] < 900) decimals[i] -= 890;
else decimals[i] -= 900;
}
else if (decimals[i] >= 500 && decimals[i] < 890) {
romanNumbers[i] += "D";
decimals[i] -= 500;
}
else if (decimals[i] >= 390 && decimals[i] < 500) {
romanNumbers[i] += "CD";
if (decimals[i] < 400) decimals[i] -= 390;
else decimals[i] -= 400;
}
else if (decimals[i] >= 100 && decimals[i] < 390) {
romanNumbers[i] += "C";
decimals[i] -= 100;
}
else if (decimals[i] >= 90 && decimals[i] < 100) {
romanNumbers[i] += "XC";
decimals[i] -= 90;
}
else if (decimals[i] >= 50 && decimals[i] < 90) {
romanNumbers[i] += "L";
decimals[i] -= 50;
}
else if (decimals[i] >= 40 && decimals[i] < 50) {
romanNumbers[i] += "XL";
decimals[i] -= 40;
}
else if (decimals[i] >= 10 && decimals[i] < 40) {
romanNumbers[i] += "X";
decimals[i] -= 10;
}
else if (decimals[i] < 10) {
switch (decimals[i]) {
case 1: romanNumbers[i] += "I"; --decimals[i]; break;
case 2: romanNumbers[i] += "II"; decimals[i] -= 2; break;
case 3: romanNumbers[i] += "III"; decimals[i] -= 3; break;
case 4: romanNumbers[i] += "IV"; decimals[i] -= 4; break;
case 5: romanNumbers[i] += "V"; decimals[i] -= 5; break;
case 6: romanNumbers[i] += "VI"; decimals[i] -= 6; break;
case 7: romanNumbers[i] += "VII"; decimals[i] -= 7; break;
case 8: romanNumbers[i] += "VIII"; decimals[i] -= 8; break;
case 9: romanNumbers[i] += "IX"; decimals[i] -= 9; break;
}
}
}
}
return romanNumbers;
}
}
https://stackoverflow.com/questions/-100002954
复制相似问题