日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Java基础知识练习02

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

1 大整數(shù)排序

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

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

1、下標(biāo)從0開(kāi)始。
2、相同的字母在一行表示出其出現(xiàn)過(guò)的位置。
示例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)換

題目描述
將一個(gè)長(zhǎng)度最多為30位數(shù)字的十進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)輸出。
輸入描述:
多組數(shù)據(jù),每行為一個(gè)長(zhǎng)度不超過(guò)30位的十進(jìn)制非負(fù)整數(shù)。
(注意是10進(jìn)制數(shù)字的個(gè)數(shù)可能有30個(gè),而非30bits的整數(shù))
輸出描述:
每行輸出對(duì)應(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)在又任意兩個(gè)正整數(shù),問(wèn)他們兩個(gè)數(shù)反轉(zhuǎn)的和是否等于兩個(gè)數(shù)的和的反轉(zhuǎn)。
輸入描述:
每行兩個(gè)正整數(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ǔ),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方法是比較對(duì)象是否相等 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 首字母大寫(xiě)

題目描述
對(duì)一個(gè)字符串中的所有單詞,如果單詞的首字母不是大寫(xiě)字母,則把單詞的首字母變成大寫(xiě)字母。 在字符串中,單詞之間通過(guò)空白符分隔,空白符包括:空格(' ')、制表符('\t')、回車符('\r')、換行符('\n')。
輸入描述:
輸入一行:待處理的字符串(長(zhǎng)度小于100)。
輸出描述:
可能有多組測(cè)試數(shù)據(jù),對(duì)于每組數(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)換為大寫(xiě) 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 浮點(diǎn)數(shù)加法

題目描述
求2個(gè)浮點(diǎn)數(shù)相加的和 題目中輸入輸出中出現(xiàn)浮點(diǎn)數(shù)都有如下的形式: P1P2...Pi.Q1Q2...Qj 對(duì)于整數(shù)部分,P1P2...Pi是一個(gè)非負(fù)整數(shù) 對(duì)于小數(shù)部分,Qj不等于0
輸入描述:
對(duì)于每組案例,每組測(cè)試數(shù)據(jù)占2行,分別是兩個(gè)加數(shù)。
輸出描述:
每組案例是n行,每組測(cè)試數(shù)據(jù)有一行輸出是相應(yīng)的和。
輸出保證一定是一個(gè)小數(shù)部分不為0的浮點(diǎn)數(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ù)

題目描述
查找一個(gè)數(shù)組的第K小的數(shù),注意同樣大小算一樣大。 如 2 1 3 4 5 2 第三小數(shù)為3。
輸入描述:
輸入有多組數(shù)據(jù)。
每組輸入n,然后輸入n個(gè)整數(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)比f(wàn)or循環(huán)要好 19 int count=1,i=1; 20 while(count<k){ 21 //比較相鄰的兩個(gè)是否相同即可 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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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