22. D进制的A+B(Java)
题目要求:
输入两个非负 10 进制整数 A 和 B (≤2^30−1),输出 A+B 的 D (1<D≤10)进制数。
输入样例:
123 456 8
输出样例:
1103
解析:其实这样的题不算难,但是自己老是记不住进制转换的方法,记录一下这个题,顺便用Java来实现一下。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//int范围[-2^31-(2^31-1)]
int A = in.nextInt();
int B = in.nextInt();
int D = in.nextInt();
in.close();
int sum = A + B;
//用于将余数插入到StringBuffer中
StringBuffer string = new StringBuffer();
while(sum != 0){
int temp = sum % D;
string.append(temp);
sum /= D;
}
//对StringBuffer内容进行倒序
string.reverse();
System.out.println(string);
}
}
```
---
这时候我就疑惑了:`StringBuffer`是个什么鬼?
详情参见[菜鸟教程](http://www.runoob.com/java/java-stringbuffer.html)
>**Java StringBuffer 和 StringBuilder 类**
>当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
---
Test.java 文件代码:
public class Test{
public static void main(String args[]){
StringBuffer sBuffer = new StringBuffer(“菜鸟教程官网:”);
sBuffer.append(“www”);
sBuffer.append(“.runoob”);
sBuffer.append(“.com”);
System.out.println(sBuffer);
}
}`
结果:
菜鸟教程官网:www.runoob.com
StringBuffer 方法
序号|方法描述
-|-|-
1|public StringBuffer append(String s):将指定的字符串追加到此字符序列。
2| public StringBuffer reverse():将此字符序列用其反转形式取代。
3|public delete(int start, int end):移除此序列的子字符串中的字符。
4| public insert(int offset, int i):将 int 参数的字符串表示形式插入此序列中
5|replace(int start, int end, String str):使用给定 String 中的字符替换此序列的子字符串中的字符。
最后的结果如下:
- 还是只有一个测试点通不过,醉了。…(⊙_⊙;)…
- 为啥表格显示不出来?
- 文字为啥跑到代码里面去了╮(╯_╰)╭