生活随笔
收集整理的這篇文章主要介紹了
Java基础知识练习02
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 大整數排序 題目描述 對N個長度最長可達到1000的數進行排序。輸入描述: 輸入第一行為一個整數N,(1<=N<=100)。 接下來的N行每行有一個數,數的長度范圍為1<=len<=1000。 每個數都是一個正數,并且保證不包含前綴零。輸出描述: 可能有多組測試數據,對于每組數據,將給出的N個數從小到大進行排序,輸出排序后的結果,每個數占一行。 示例1輸入 3 11111111111111111111111111111 2222222222222222222222222222222222 33333333輸出 33333333 11111111111111111111111111111 2222222222222222222222222222222222
1 package Test;
2
3 import java.util.Map;
4 import java.util.Scanner;
5 import java.util.TreeMap;
6
7 public class Main{
8 public static void main(String[] args) {
9 Scanner sc=
new Scanner(System.in);
10 while (sc.hasNext()){
11 int n=
Integer.parseInt(sc.nextLine());
12 String[] str=
new String[n];
13 for (
int i=0;i<n;i++
){
14 str[i]=
sc.nextLine();
15 }
16 sort(n,str);
17 }
18 }
19 // 采用的是選擇排序
20 public static void sort(
int n,String[] str){
21 String s;
22 for (
int i=0;i<n;i++
){
23 for (
int j=i+1;j<n;j++
){
24 if (compare(str[i],str[j])){
25 s=
str[i];
26 str[i]=
str[j];
27 str[j]=
s;
28 }
29 }
30 }
31 // 排序后的輸出結果
32 for (
int k=0;k<n;k++
){
33 System.out.println(str[k]);
34 }
35 }
36 public static boolean compare(String s1,String s2){
37 int len1=
s1.length();
38 int len2=
s2.length();
39 if (len1>
len2){
40 return true ;
41 }
else if (len1<
len2){
42 return false ;
43 }
else {
44 if (s1.compareTo(s2)>0
)
45 return true ;
46 }
47 return false ;
48 }
49 }
?2 找位置 題目描述 對給定的一個字符串,找出有重復的字符,并給出其位置,如:abcaaAB12ab12 輸出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。 輸入描述: 輸入包括一個由字母和數字組成的字符串,其長度不超過100。輸出描述: 可能有多組測試數據,對于每組數據, 按照樣例輸出的格式將字符出現的位置標出。
1、下標從0開始。 2、相同的字母在一行表示出其出現過的位置。 示例1輸入 abcaaAB12ab12輸出 a:0,a:3,a:4,a:9 b:1,b:10 1:7,1:11 2:8,2:12
1 package Test;
2
3
4 import java.util.HashSet;
5 import java.util.Scanner;
6 import java.util.Set;
7
8
9 public class Main{
10 public static void main(String[] args) {
11 Scanner sc=
new Scanner(System.in);
12 while (sc.hasNext()){
13 String str=
sc.nextLine();
14 int len=
str.length();
15 Set<Character> set=
new HashSet<Character>
();
16 for (
int i=0;i<len-1;i++
){
17 if (set.add(str.charAt(i))){
18 String out=str.charAt(i)+":"+
i;
19 int flag=0;
// 標記是否是重復字符
20 for (
int j=i+1;j<len;j++
){
21 if (str.charAt(i)==
str.charAt(j)){
22 out+= ","+str.charAt(j)+":"+
j;
23 flag=1;
// 是重復字符
24 }
25 }
26 // 只輸出重復的字符
27 if (flag==1
)
28 System.out.println(out);
29 }
30 }
31 }
32 }
33 }
?3 進制轉換 題目描述 將一個長度最多為30位數字的十進制非負整數轉換為二進制數輸出。 輸入描述: 多組數據,每行為一個長度不超過30位的十進制非負整數。 (注意是10進制數字的個數可能有30個,而非30bits的整數)輸出描述: 每行輸出對應的二進制數。 示例1輸入 0 1 3 8輸出 0 1 11 1000
1 package Test;
2
3 import java.math.BigInteger;
4 import java.util.Scanner;
5
6 public class Main{
7 public static void main(String[] args) {
8 Scanner sc=
new Scanner(System.in);
9 while (sc.hasNext()){
10 String str=
sc.nextLine();
11 BigInteger n=
new BigInteger(str,10
);
12 System.out.println(n.toString(2
));
13 }
14 }
15 }
?4 數字反轉 題目描述 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,現在又任意兩個正整數,問他們兩個數反轉的和是否等于兩個數的和的反轉。輸入描述: 每行兩個正整數a和b(0<a,b<=10000)。輸出描述: 如果滿足題目的要求輸出a+b的值,否則輸出NO。 示例1輸入 12 34 99 1輸出 46 NO
1 package Test;
2
3 import java.util.Scanner;
4
5 public class Main{
6 public static void main(String[] args) {
7 Scanner sc=
new Scanner(System.in);
8 while (sc.hasNext()){
9 int a=
sc.nextInt();
10 int b=
sc.nextInt();
11 StringBuffer sb1=
new StringBuffer();
12 StringBuffer sb2=
new StringBuffer();
13 sb1.append(a+b);
// a+b的和轉為StringBuffer可以直接append
14 sb1=sb1.reverse();
// 把和反轉
15 // 把a,b反轉然后換為整數
16 int n1=Integer.parseInt(
new StringBuffer().append(a).reverse().toString());
17 int n2=Integer.parseInt(
new StringBuffer().append(b).reverse().toString());
18 sb2.append(n1+
n2);
19 // StringBuffer繼承Object的equal方法是比較對象是否相等
20 if (sb1.toString().equals(sb2.toString())){
21 System.out.println(a+
b);
22 }
else {
23 System.out.println("No"
);
24 }
25 }
26 sc.close();
27 }
28 }
?5 首字母大寫 題目描述 對一個字符串中的所有單詞,如果單詞的首字母不是大寫字母,則把單詞的首字母變成大寫字母。 在字符串中,單詞之間通過空白符分隔,空白符包括:空格(' ')、制表符('\t')、回車符('\r')、換行符('\n')。輸入描述: 輸入一行:待處理的字符串(長度小于100)。輸出描述: 可能有多組測試數據,對于每組數據, 輸出一行:轉換后的字符串。 示例1輸入 if so, you already have a google account. you can sign in on the right.輸出 If So, You Already Have A Google Account. You Can Sign In On The Right.
1 package Test;
2
3 import java.util.Scanner;
4
5 import javax.swing.JFrame;
6
7 public class Main{
8 public static void main(String[] args) {
9 Scanner sc=
new Scanner(System.in);
10 while (sc.hasNext()){
11 String str=
sc.nextLine();
12 int len=
str.length();
13 char [] arr=str.toCharArray();
// 把字符串轉換為字符數組
14 if (arr[0]<='z'&&arr[0]>='a'
){
15 arr[0]=(
char )(arr[0]-32);
// 把首字母轉換為大寫
16 }
17 // 要注意區別首字母和尾字母
18 for (
int i=1;i<len;i++
){
19 if (arr[i-1]==' '||arr[i-1]=='\t'
){
20 if (arr[i]<='z'&&arr[i]>='a'
){
21 arr[i]=(
char )(arr[i]-32
);
22 }
23 }
24 }
25 // 把數組轉換為字符串輸出
26 System.out.println(
new String(arr));
27 }
28 }
29 }
?6 浮點數加法 題目描述 求2個浮點數相加的和 題目中輸入輸出中出現浮點數都有如下的形式: P1P2...Pi.Q1Q2...Qj 對于整數部分,P1P2...Pi是一個非負整數 對于小數部分,Qj不等于0輸入描述: 對于每組案例,每組測試數據占2行,分別是兩個加數。輸出描述: 每組案例是n行,每組測試數據有一行輸出是相應的和。 輸出保證一定是一個小數部分不為0的浮點數 示例1輸入 0.111111111111111111111111111111 0.111111111111111111111111111111輸出 0.222222222222222222222222222222
1 package Test;
2
3 import java.math.BigDecimal;
4 import java.util.Scanner;
5
6 // 直接用Java里的專用小數處理
7 public class Main{
8 public static void main(String[] args) {
9 Scanner sc=
new Scanner(System.in);
10 while (sc.hasNext()){
11 BigDecimal a=
sc.nextBigDecimal();
12 BigDecimal b=
sc.nextBigDecimal();
13 System.out.println(a.add(b));
14 }
15 }
16 }
?7 查找第k小數 題目描述 查找一個數組的第K小的數,注意同樣大小算一樣大。 如 2 1 3 4 5 2 第三小數為3。輸入描述: 輸入有多組數據。 每組輸入n,然后輸入n個整數(1<=n<=1000),再輸入k。輸出描述: 輸出第k小的整數。 示例1輸入 6 2 1 3 5 2 2 3輸出 3
1 package Test;
2
3 import java.util.Arrays;
4 import java.util.Scanner;
5
6
7 public class Main{
8 public static void main(String[] args) {
9 Scanner sc=
new Scanner(System.in);
10 while (sc.hasNext()){
11 int n=
sc.nextInt();
12 int [] arr=
new int [n];
13 for (
int i=0;i<n;i++
){
14 arr[i]=
sc.nextInt();
15 }
16 int k=
sc.nextInt();
17 Arrays.sort(arr);
18 // 此處用while循環比for循環要好
19 int count=1,i=1
;
20 while (count<
k){
21 // 比較相鄰的兩個是否相同即可
22 if (arr[i-1]!=arr[i]) count++
;
23 i++
;
24 }
25 System.out.println(arr[i-1
]);
26 }
27 }
28 }
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
1
?
轉載于:https://www.cnblogs.com/youngao/p/9780139.html
總結
以上是生活随笔 為你收集整理的Java基础知识练习02 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。