Javase基础课程练习题(附多种解法答案)_javase配套练习

			switchStr += singleCastStr;// 转换后拼接
		} else {
			// 不是字母的,如符号,中文等
			switchStr += singleCast;
		}
	}
	System.out.println("转换后的值为:"+switchStr);
}

}


3.2 解法2



> 
> 解题思路,转换成单个字符串,然后通过Ascii码转换进行大小写互转。
> 
> 
> 



import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
System.out.println(“请输入一个字符串:”);
Scanner scanner = new Scanner(System.in);
String inputStr = scanner.next();
char[] tempArray = inputStr.toCharArray();
for (char singleCast : tempArray) {
if (singleCast >= ‘A’ && singleCast <= ‘Z’) {
System.out.print((char) (singleCast +32));
} else if (singleCast >= ‘a’ && singleCast <= ‘z’) {
System.out.print((char) (singleCast -32));
} else {
// 不是字母的,如符号,中文等
System.out.print(singleCast);
}
}
}
}


## 4. 输入三个整数x,y,z,请把这三个数由小到大输出。



> 
> 例如输入:1,3,2 输出 1,2,3
> 
> 
> 


4.1 比较三个数 找出最值



import java.util.Scanner;
public class D {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入3个数字:”);
int a=scanner.nextInt();
int b=scanner.nextInt();
int c=scanner.nextInt();
//a 最小的情况
if(a<=b&&a<=c){
System.out.println(a);
if(b<=c){
System.out.println(b);
System.out.println©;
}else {
System.out.println©;
System.out.println(b);
}
}
//b最小
if(b<=a&&b<=c){
System.out.println(b);
if(a<=c){
System.out.println(a);
System.out.println©;
}else{
System.out.println©;
System.out.println(a);
}
}
// c最小
if(c<=b&&c<=a){
System.out.println©;
if(b<=a){
System.out.println(b);
System.out.println(a);
}else{
System.out.println(a);
System.out.println(b);
}
}
}
}


4.2 借助数组排序



import java.util.Arrays;
import java.util.Scanner;
public class D {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入3个数字:”);
int a=scanner.nextInt();
int b=scanner.nextInt();
int c=scanner.nextInt();
int arr[]={a,b,c};
int sortArr[]=Arrays.stream(arr).sorted().toArray();
System.out.println(sortArr[0]);
System.out.println(sortArr[1]);
System.out.println(sortArr[2]);
}


4.3 借助List 列表进行排序



import java.util.*;

public class D {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入3个数字:”);
int a=scanner.nextInt();
int b=scanner.nextInt();
int c=scanner.nextInt();
List list=new ArrayList<>();
list.add(a);
list.add(b);
list.add©;
list.sort(new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1>o2)return 1;
if(o1<o2)return -1;
return 0;
}
});
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
}
}


其中



list.sort(new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1>o2)return 1;
if(o1<o2)return -1;
return 0;
}
});


与箭头函数



list.sort((d1,d2)->d1-d2); //d2-d1为降序


等价


4.4 递归



> 
> 每次找出一个最小的输出 找到后在列表中进行移出
> 
> 
> 



import java.util.*;

public class D {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入3个数字:”);
int a=scanner.nextInt();
int b=scanner.nextInt();
int c=scanner.nextInt();
List list=new ArrayList<>();
list.add(a);
list.add(b);
list.add©;
dfs(list);
}
public static void dfs(List list){
if(list.size()==0)return;
int min=list.get(0);
for(int i=1;i<list.size();i++){
min=Math.min(list.get(i),min);
}
System.out.println(min);
list.remove(Integer.valueOf(min));
dfs(list);//递归:方法内部调用方法本身
}
}


## 5. 输入5个整数a,b,c,d,e 对五个整数进行排序。



> 
> 例如输入5,3,2,1,4 输出 1,2,3,4,5
> 
> 
> 


**参考上一题中的2 3 4 解法**


## 6. 判断101-200之间有多少个素数,并输出所有素数。



> 
> 素数:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 例如3和5,7
> 
> 
> 



public class D {
public static void main(String[] args) {
int num=0;
for(int i=101;i<=200;i+=2){//剪枝 这个范围内 偶数绝不可能是素数
if(isRes(i)){
num++;
System.out.println(i);
}
}
System.out.println(“共”+num+“个素数”);
}
public static boolean isRes(int num){
for(int i=3;i<num;i++){
if(num%i==0){
return false;
}
}
return true;
}
}


## 7. 利用循环和分支完成学习成绩转换



> 
> 学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。并且可以实现循环输入学习成绩得出等级 输入分数为-1 则退出。  
>  例如输入 90 输出 A, 输入50 输出C
> 
> 
> 



import java.util.*;

public class D {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int num=scanner.nextInt();
while(num!=-1){
if(num>=90){
System.out.println(“A”);
}else if(num>=60){
System.out.println(“B”);
}else{
System.out.println(“C”);
}
num=scanner.nextInt();
}
System.out.println(“已退出”);
}
}


这个题在学习时,请注意循环的使用 条件判断时注意判断的顺序,注意这里的循环对编程思维来说很重要。


## 8. 请找出100以内与3相关的数



> 
> 1、3的倍数  
>  2、十位数是3的数  
>  3.、个位数是3的数  
>  4、要求找出的数不重复
> 
> 
> 



public class D {
public static void main(String[] args) {
for(int i=1;i<=100;i++){
if(i%30){
//3的倍数
System.out.println(i);
}else if(i/10
3){
//十位数是3
System.out.println(i);
}else if(i%10==3){
//个位数是3
System.out.println(i);
}
}
}
}


可以尝试使用while循环来做,思考如果不用多分支if 即不是有else if 怎么实现???


## 9. 输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。



> 
> 例如输入 Ab12 sd  
>  输出字母:4,空格1个,数字2个,这里的数字按0到9算,12是1和2不是12
> 
> 
> 



import java.util.*;

public class D {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String word=scanner.nextLine();
int cNum=0,blankNum=0,number=0,otherNum=0;
for (int i=0;i<word.length();i++){
char c=word.charAt(i);
if(c>=‘a’&&c<=‘z’ || c>=‘A’&& c<=‘Z’){
cNum++;
}else if(c==’ '){
blankNum++;
}else if(c>=‘0’&&c<=‘9’){
number++;
}else{
otherNum++;
}
}
System.out.println(“字母个数:”+cNum+“空格个数:”+blankNum+“数字个数:”+number+“其他字符个数:”+otherNum);
}
}


## 10. 打印几何图形










public class demo8 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
System.out.print(" “);
}
for(int k=0;k<2*i+1;k++){
System.out.print(”*“);
}
System.out.println();
}
for(int i=1;i<5;i++){
for(int k=0;k<i+1;k++){
System.out.print(” “);
}
for(int j=11;j>2*i+2;j–){
System.out.print(”*");
}
System.out.println();
}
}
}



*






package com.lvan.demo8;

public class demo8 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
System.out.print(" “);
}
for(int k=0;k<2*i+1;k++){
System.out.print(”*");
}
System.out.println();
}
}
}



**






public class App {
public static void main(String[] args) {
for(int i=0;i<6;i++){
for(int k=0;k<i;k++){
System.out.print(“*”);
}
System.out.println();
}
System.out.println();
}
}



**






**
*



package com.lvan.demo8;

public class demo8 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int k=0;k<2*i+1;k++){
System.out.print(“*”);
}
System.out.println();
}
for(int i=1;i<5;i++){
for(int j=11;j>2*i+2;j–){
System.out.print(“*”);
}
System.out.println();
}
}
}



 *
*  *
  •  *
    
  •    *
    
  •  *
    
*  *
  *


package com.lvan.demo8;

import sun.tools.jar.resources.jar;

public class demo8 {
public static void drawUp(){
for(int i=0;i<5;i++){
for(int j=0;j<(10-i);j++){
System.out.print(" “);
}
System.out.print(”*“);
for(int j=0;j<2*(i-1)+1;j++){
System.out.print(” “);
}
if(i!=0){
System.out.print(”*“);
}
System.out.println();
}
}
public static void drawDown(){
for(int i=0;i<=5;i++){
for(int k=0;k<5+i;k++){
System.out.print(” “);
}
System.out.print(”*“);
for(int k=0;k<2*(5-i-1)+1;k++){
System.out.print(” ");
}

		if(i!=5){
			System.out.print("\*");
		}
		System.out.println();
	}
}
public static void main(String[] args) {
	drawUp();
	drawDown();
}

}


## 11. 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。


11.1



> 
> 使用if来判断,分别求,最易理解,代码较多
> 
> 
> 



package com.test.demo;
import java.util.Scanner;

public class App {
public static void main(String[] args) {
System.out.println(“请输入一个不多于五位的整数:”);
Scanner scanner=new Scanner(System.in);
int number=scanner.nextInt();
if(number>=10000){
System.out.println(“该数为5位数”);
}else if(number>=1000){
System.out.println(“该数为4位数”);
}else if(number>=100){
System.out.println(“该数为3位数”);
}else if(number>=10){
System.out.println(“该数为2位数”);
}else if(number>=0){
System.out.println(“该数为1位数”);
}else{
System.out.println(“输入错误”);
}

	if(number>=10000){
		System.out.print(number%10 );
		number=number/10;
	}
	if(number>=1000){
		System.out.print(number%10);
		number=number/10;
	}
	if(number>=100){
		System.out.print(number%10+"--");
		number=number/10;
	}
	if(number>=10){
		System.out.print(number%10);
		number=number/10;
	}
	if(number>=1){
		System.out.print(number%10);
		number=number/10;
	}
}

}


11.2 简化1:将数字转化为字符串,调用tochararray方法将字符串转化为单字符数组,获取数组长度即为输入的数字的位数。再通过循环求余每次输出最后一位数。简化后便不受位数限制,可以接收用户任意输入的数字。



package com.test.demo;
import java.util.Scanner;

public class App {
public static void main(String[] args) {
System.out.println(“请输入一个不多于五位的整数:”);
Scanner scanner=new Scanner(System.in);
int number=scanner.nextInt();
String numberStr=number+“”;
int n=numberStr.toCharArray().length;
System.out.println(“该数为”+n+“位数”);
for(int i=0;i<n;i++){
System.out.print(number%10);
number=number/10;
}
}
}


11.3 解法2:直接通过转化成单字符来进行输入和输出,不受输入内容的限制,即可输入其他的非数字字符。



package com.test.demo;
import java.util.Scanner;

public class App {
public static void main(String[] args) {
System.out.println(“请输入一个不多于五位的整数:”);
Scanner scanner=new Scanner(System.in);
// int number=scanner.next();
String numberStr=scanner.next();
char[] numberStrArray=numberStr.toCharArray();
int n=numberStrArray.length;
System.out.println(“该数为”+n+“位数”);
for(int i=0;i<n;i++){
System.out.print(numberStrArray[n-i-1]);
}
}
}


## 12. 求一个3\*3矩阵对角线元素之和。



> 
> 3\*3 矩阵,即为一个3行3列的二维数组。
> 
> 
> 



package com.test.demo;
import java.util.Random;
import java.util.Scanner;

public class App {
public static void main(String[] args) {
int [][] number=new int[3][3];
for(int i=0;i<3;i++){
for(int k=0;k<3;k++){
number[i][k]=new Random().nextInt(50);
System.out.print(number[i][k]+" ");
}
System.out.println();
}
int sum=0;
for(int i=0;i<3;i++){
for(int k=0;k<3;k++){
if(i==k){
sum+=number[i][k];
}
}
}
System.out.println(“和为”+sum);
}
}


输出:



> 
> 4 37 21  
>  4 42 3  
>  9 21 47  
>  和为93  
>  上述为左上到右下的对角线的求和,左下到右上感兴趣的可以做一下评论区留言。
> 
> 
> 


13. 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。



> 
> 例如 已有数组为[1,3,4,5,6] 升序 输入 2 时 输出 [1,2,3,4,5,6]  
>  输入3时 输出[1,3,3,4,5,6]  
>  已有数组为[6,5,2,1]降序 输入3时 输出 [6,5,3,2,1]  
>  输入5时 输出[6,5,5,2,1]
> 
> 
> 


14. 将一个数组逆序输出。



> 
> 输入 3,2,1,5,6 输出 6,5,1,2,3
> 
> 
> 


15. 取一个大于7位的整数a从右端开始的4~7位。



> 
> 输入 1235678 输出 123  
>  输入12345678910 输出678
> 
> 
> 


16. 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。



> 
> 输入 5,7,1,3,2 输出 7,5,2,3,1
> 
> 
> 


17. 计算字符串中子串出现的次数。



> 
> 输入 abca  


# 最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些分享,希望能更好的帮助到大家。

![](https://img-blog.csdnimg.cn/img_convert/f25e1084c1fa7ed5f40b981fd009ca8b.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/ce22634375d94caa5ad5b3308e1b619e.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/8151aac142f1fe5015de18821a135458.webp?x-oss-process=image/format,png)

做一下评论区留言。
> 
> 
> 


13. 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。



> 
> 例如 已有数组为[1,3,4,5,6] 升序 输入 2 时 输出 [1,2,3,4,5,6]  
>  输入3时 输出[1,3,3,4,5,6]  
>  已有数组为[6,5,2,1]降序 输入3时 输出 [6,5,3,2,1]  
>  输入5时 输出[6,5,5,2,1]
> 
> 
> 


14. 将一个数组逆序输出。



> 
> 输入 3,2,1,5,6 输出 6,5,1,2,3
> 
> 
> 


15. 取一个大于7位的整数a从右端开始的4~7位。



> 
> 输入 1235678 输出 123  
>  输入12345678910 输出678
> 
> 
> 


16. 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。



> 
> 输入 5,7,1,3,2 输出 7,5,2,3,1
> 
> 
> 


17. 计算字符串中子串出现的次数。



> 
> 输入 abca  


# 最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些分享,希望能更好的帮助到大家。

[外链图片转存中...(img-SeXe4aP2-1719159226275)]

[外链图片转存中...(img-RDpfjAZM-1719159226276)]

[外链图片转存中...(img-9r7kA8na-1719159226277)]

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值