日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础知识练习02

發(fā)布時間:2025/5/22 java 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础知识练习02 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 大整數(shù)排序

題目描述
對N個長度最長可達(dá)到1000的數(shù)進(jìn)行排序。
輸入描述:
輸入第一行為一個整數(shù)N,(1<=N<=100)。
接下來的N行每行有一個數(shù),數(shù)的長度范圍為1<=len<=1000。
每個數(shù)都是一個正數(shù),并且保證不包含前綴零。
輸出描述:
可能有多組測試數(shù)據(jù),對于每組數(shù)據(jù),將給出的N個數(shù)從小到大進(jìn)行排序,輸出排序后的結(jié)果,每個數(shù)占一行。
示例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 //排序后的輸出結(jié)果 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 找位置

題目描述
對給定的一個字符串,找出有重復(fù)的字符,并給出其位置,如:abcaaAB12ab12 輸出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。
輸入描述:
輸入包括一個由字母和數(shù)字組成的字符串,其長度不超過100。
輸出描述:
可能有多組測試數(shù)據(jù),對于每組數(shù)據(jù),
按照樣例輸出的格式將字符出現(xiàn)的位置標(biāo)出。

1、下標(biāo)從0開始。
2、相同的字母在一行表示出其出現(xiàn)過的位置。
示例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;//標(biāo)記是否是重復(fù)字符 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;//是重復(fù)字符 24 } 25 } 26 //只輸出重復(fù)的字符 27 if(flag==1) 28 System.out.println(out); 29 } 30 } 31 } 32 } 33 }

?3 進(jìn)制轉(zhuǎn)換

題目描述
將一個長度最多為30位數(shù)字的十進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)輸出。
輸入描述:
多組數(shù)據(jù),每行為一個長度不超過30位的十進(jìn)制非負(fù)整數(shù)。
(注意是10進(jìn)制數(shù)字的個數(shù)可能有30個,而非30bits的整數(shù))
輸出描述:
每行輸出對應(yīng)的二進(jìn)制數(shù)。
示例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 數(shù)字反轉(zhuǎn)

題目描述
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,現(xiàn)在又任意兩個正整數(shù),問他們兩個數(shù)反轉(zhuǎn)的和是否等于兩個數(shù)的和的反轉(zhuǎn)。
輸入描述:
每行兩個正整數(shù)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的和轉(zhuǎn)為StringBuffer可以直接append 14 sb1=sb1.reverse();//把和反轉(zhuǎn) 15 //把a,b反轉(zhuǎn)然后換為整數(shù) 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)。
輸出描述:
可能有多組測試數(shù)據(jù),對于每組數(shù)據(jù),
輸出一行:轉(zhuǎn)換后的字符串。
示例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();//把字符串轉(zhuǎn)換為字符數(shù)組 14 if(arr[0]<='z'&&arr[0]>='a'){ 15 arr[0]=(char)(arr[0]-32);//把首字母轉(zhuǎn)換為大寫 16 } 17 //要注意區(qū)別首字母和尾字母 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 //把數(shù)組轉(zhuǎn)換為字符串輸出 26 System.out.println(new String(arr)); 27 } 28 } 29 }

?6 浮點數(shù)加法

題目描述
求2個浮點數(shù)相加的和 題目中輸入輸出中出現(xiàn)浮點數(shù)都有如下的形式: P1P2...Pi.Q1Q2...Qj 對于整數(shù)部分,P1P2...Pi是一個非負(fù)整數(shù) 對于小數(shù)部分,Qj不等于0
輸入描述:
對于每組案例,每組測試數(shù)據(jù)占2行,分別是兩個加數(shù)。
輸出描述:
每組案例是n行,每組測試數(shù)據(jù)有一行輸出是相應(yīng)的和。
輸出保證一定是一個小數(shù)部分不為0的浮點數(shù)
示例1
輸入
0.111111111111111111111111111111
0.111111111111111111111111111111
輸出
0.222222222222222222222222222222

1 package Test; 2 3 import java.math.BigDecimal; 4 import java.util.Scanner; 5 6 // 直接用Java里的專用小數(shù)處理 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小數(shù)

題目描述
查找一個數(shù)組的第K小的數(shù),注意同樣大小算一樣大。 如 2 1 3 4 5 2 第三小數(shù)為3。
輸入描述:
輸入有多組數(shù)據(jù)。
每組輸入n,然后輸入n個整數(shù)(1<=n<=1000),再輸入k。
輸出描述:
輸出第k小的整數(shù)。
示例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循環(huán)比for循環(huán)要好 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

?

轉(zhuǎn)載于:https://www.cnblogs.com/youngao/p/9780139.html

總結(jié)

以上是生活随笔為你收集整理的Java基础知识练习02的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。