java - (Java)为什么 Integer.toOctalString() 函数有时能正常工作,有时不能?(详情请看我的程序)
问题描述
我目前正在开发一个关于添加八进制数的程序,我需要使用Integer.toOctalString()函数将我的十进制更改为八进制,如下所示:Integer.toOctalString(5 + 3) 这将返回正确的答案"10"但是对于这个Integer.toOctalString(221 + 2)它不会返回223而是一个奇怪的337?我该如何解决它,这是我的程序。这是问题的图片,很难解释,所以在这里 谢谢
package first_try;
import java.io.IOException;
import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class main {
public static void main(String[] args) throws IOException {
int s, d, r;
Scanner k = new Scanner(System.in);
ArrayList<Integer> data1 = new ArrayList<>(3);
ArrayList<Integer> data2 = new ArrayList<>(3);
ArrayList<Integer> data3 = new ArrayList<>(3);
ArrayList<Integer> data4 = new ArrayList<>(3);
ArrayList<Integer> data5 = new ArrayList<>(3);
for(int i = 0; i < 3; i++)
data1.add(k.nextInt());
for(int i = 0; i < 3; i++)
data2.add(k.nextInt());
for(int i = 0; i < 3; i++)
data3.add(k.nextInt());
for(int i = 0; i < 3; i++)
data4.add(k.nextInt());
for(int i = 0; i < 3; i++)
data5.add(k.nextInt());
ArrayList<Integer> result = new ArrayList<>(5);
result.add(Calculation(data1.get(0),data1.get(1),data1.get(2)));
result.add(Calculation(data2.get(0),data2.get(1),data2.get(2)));
result.add(Calculation(data3.get(0),data3.get(1),data3.get(2)));
result.add(Calculation(data4.get(0),data4.get(1),data4.get(2)));
result.add(Calculation(data5.get(0),data5.get(1),data5.get(2)));
System.out.println(result);
}
public static int Calculation(int s, int d, int r)
{
int num = r*(1+r)/2;
ArrayList<String> output = new ArrayList<String>(num);
ArrayList<Integer> answer = new ArrayList<Integer>();
int sum = 0;
int number = 0;
for(int i = 0; i < num-1; i++)
{
output.add(Integer.toOctalString(s+d));
s += d;
}
for(int j = 0; j < r; j++)
{
number = Integer.parseInt(output.get((output.size()-1) - j));
while (number > 0) {
answer.add(number%10);
number = number / 10;
}
}
for(int key : answer)
sum += key;
return sum;
}
}
我现在使用的测试数据是
SAMPLE INPUT: SAMPLE OUTPUT:
2 3 5 1. 36
221 2 4 2. 38
1 4 20 3. 230
10 10 10 4. 99
3245 5 11 5. 178
但我得到的输出是
36
48
230
115
208
解决方案
Java SE 规范包含指向所有Java 语言规范版本的链接
请参阅有关整数文字的部分,例如在Java 8 版本中。
221 是十进制整数文字,而 0_221 是八进制文字。因此,您的 java 代码将 221 解释为十进制而不是八进制。
推荐阅读
- python - 访问 lambda 中的测试事件参数
- python - Python 在 Apache OpenOffice 中打开和保存 csv 文件
- asp.net-core - 如何为现有查询字符串 Blazor 设置新值
- android - 设备锁定在 android 中时在后台获取位置
- python - IndexError: list index out of range - 当它显然不是时
- android - 如果项目在android的recyclerview中更改,如何更改
- xamarin.forms - 如何在xamarin表单的列表视图中更改自定义渲染标签textcolor
- python - 在 OpenCV Python 中获取 src 类型 CV_8UC3 到 CV_8UC1 时出错?
- azure - 如何使用逻辑应用对电子邮件进行数字签名
- javascript - 我正在尝试在反应中实现动态搜索