用Java编写经典小程序

 更新时间:2018年04月25日 11:39:14   作者:Wendy-lxq  
非常实用的12种基础算法的经典案例,对于初学者来说有很大的帮助,数量有限需要的朋友可以参考下

如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用

1、输出两个int数中的最大值

import java.util.Scanner; 
 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请依次输入两个整数:a,b(以空格隔开)"); 
 /*比较两个数的大小*/ 
 int a = scanner.nextInt(); 
 int b = scanner.nextInt(); 
 int max; 
 if(a >= b){ 
 max = a; 
 }else { 
 max = b; 
 } 
 System.out.println("最大值为"+max); 
 } 
 } 
} 

2、输出三个int数中的最大值

package demo; 
 
import java.util.Scanner; 
 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请依次输入两个整数:a,b(以空格隔开)"); 
 int a = scanner.nextInt(); 
 int b = scanner.nextInt(); 
 int c = scanner.nextInt(); 
 scanner.close(); 
 /*方法一*/ 
 int d=(a>b)?a:b; 
 int e=(d>c)?d:c; 
 System.out.println("最大值为"+e); 
 
 /*方法二*/ 
 if(a>b && a>c){ 
 System.out.println("最大值为"+a); 
 }else if(b>c && b>a){ 
 System.out.println("最大值为"+b); 
 }else if(c>b && c>a){ 
 System.out.println("最大值为"+c); 
 }else{ 
 System.out.println("出现异常"); 
 } 
 } 
} 

3、编写程序判断某一个年份是否是闰年

package demo; 
 
import java.util.Scanner; 
/*判断闰年 
 由用户输入任意一个年份,能被4整除但不能被100整除,或者能被400整除,是闰年。 
 要求判断一个年份是否为闰年。 
 要求输出:此年份是否是闰年 
 */ 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请输入年份:"); 
 int year = scanner.nextInt(); 
 
 /*方法一*/ 
 if((year % 4 ==0 && year % 100 !=0) || year%400 ==0){ 
 System.out.println("这个年份是闰年"); 
 }else{ 
 System.out.println("这个年份不是闰年"); 
 } 
 
 /*方法二*/ 
 boolean isLeapYear = (year % 4 ==0 && year % 100 !=0) || year%400 ==0; 
 String string = isLeapYear?year+"是闰年":year+"不是闰年"; 
 System.out.println(string); 
 
 } 
} 

4、完成成绩等级输出程序:如果用户输入的分数正确(0-100),则根据表-1中的规则计算该分数所对应的的级别,并计算结果。

package demo; 
 
import java.util.Scanner; 
 
/* 
 * 成绩等级划分表 
 * >= 90 A 
 * >=80 B 
 * >=60 C 
 * <60 D 
 * 
 * 分数范围:0-100 
 * 
 * 需要有2个判断*/ 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请输入分数:"); 
 double score = scanner.nextDouble(); 
 scanner.close(); 
 
 if(score < 0 || score >100){ 
 System.out.println("输入的分数不在0-100之间,不符合要求"); 
 }else if(score >= 90){ 
 System.out.println("A"); 
 }else if(score >= 80){ 
 System.out.println("B"); 
 }else if(score >= 60){ 
 System.out.println("C"); 
 }else{ 
 System.out.println("D"); 
 } 
 } 
} 

5、完成命令解析程序:有一个命令解析程序,该程序提供三个功能选型供用户选择,用户选择某功能后,程序在界面上输出用 户所选择的的功能名称。程序的交互如图:

package demo; 
 
import java.util.Scanner; 
/* 
 * 有一个命令解析程序,该程序提供三个功能选型供用户选择, 
 * 用户选择某功能后,程序在界面上输出用户所选择的的功能名称。 
 * 
 * */ 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请选择功能:1.显示全部记录 2.查询登录记录 0.退出"); 
 int command = scanner.nextInt(); 
 scanner.close(); 
 
 switch (command) { 
 case 0: 
 System.out.println("欢迎使用"); 
 break; 
 case 1: 
 System.out.println("显示全部记录……"); 
 break; 
 case 2: 
 System.out.println("查询登录记录……"); 
 break; 
 
 default: 
 System.out.println("输入错误!"); 
 
 } 
 } 
} 

6、完成收银柜台收款程序:编写一个收银柜台收款程序,根据单价、购买数量以及收款进行计算并输出应收金额和找零;当总价大于或者等于500,享受8折优惠。控制台交互如下:

package demo; 
 
import java.util.Scanner; 
/* 
 * 需求: 
 * 编写一个收银柜台收款程序。根据单价、购买数量以及收款进行计算并输出应收金额和找零; 
 * 当总价大于或者等于500,享受8折优惠。 
 * 
 */ 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请输入单价(¥):"); 
 double price = scanner.nextDouble(); 
 
 System.out.println("请输入数量:"); 
 double amount = scanner.nextDouble(); 
 
 System.out.println("请输入收款金额:"); 
 double count = scanner.nextDouble(); 
 
 double totalMoney = price*amount; 
 
 if(totalMoney > 500){ 
 totalMoney = totalMoney*0.8; 
 } 
 
 double change = count - totalMoney; 
 System.out.println("应收金额为:"+totalMoney + "找零为:"+change); 
 
 } 
} 

7、java从键盘输入三个整数,实现从小到大排序。

package demo; 
 
import java.util.Scanner; 
 
/* 
 * java从键盘输入三个整数,实现从小到大排序 
 * 
 **/ 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请输入三个整数,以空格隔开:"); 
 
 int a = scanner.nextInt(); 
 int b = scanner.nextInt(); 
 int c = scanner.nextInt(); 
 
 scanner.close(); 
 System.out.println("输入的值为:a = " + a + ", b = " + b + ", c = " + c); 
 if(a > b){ 
 if ( b > c) { 
 System.out.println("排序后的值为:" + c + "," + b + "," + a); 
 }else if( c > a){ 
 System.out.println("排序后的值为:" + b + "," + a + "," + c); 
 }else{ 
 System.out.println("排序后的值为:" + b + "," + a + "," + c); 
 } 
 }else{ 
 if(c < a){ 
 System.out.println("排序后的值为:" + c + "," + a + "," + b); 
 }else if(c > b){ 
 System.out.println("排序后的值为:" + a + "," + b + "," + c); 
 }else{ 
 System.out.println("排序后的值为:"+ a + "," + c + "," + b); 
 } 
 } 
 } 
} 

8、计算个人所得税 北京地区的个人所得税计算公式:应纳税额 = (工资薪金所得 - 扣除数)*适用税率 - 速算扣除数 其中,扣除数为3500,适用税率以及速算扣除数如下表所示:

package demo; 
 
import java.util.Scanner; 
/* 
 * 北京地区的个人所得税计算公式: 
 应纳税额 = (工资薪金所得 - 扣除数)*适用税率 - 速算扣除数 
 其中,扣除数为3500 
*/ 
public class demo { 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请输入你的税前工资:"); 
 int salaryBeforeTax = scanner.nextInt(); 
 scanner.close(); 
 
 int taxSalary = salaryBeforeTax - 3500; 
 double tax; 
 
 /* 方法一*/ 
 tax = taxSalary<0?0.0: 
 taxSalary<=1500?taxSalary*0.03: 
 taxSalary<=4500?taxSalary*0.1-105: 
 taxSalary<=9000?taxSalary*0.2-555: 
 taxSalary<=35000?taxSalary*0.25-1005: 
 taxSalary<=55000?taxSalary*0.3-2755: 
 taxSalary<=80000?taxSalary*0.35-5505: 
 taxSalary*0.45-13505; 
 System.out.println("个人应缴纳税款为:"+tax); 
 
 /*方法二*/ 
 if( taxSalary < 0 ){ 
 tax = 0; 
 }else if( taxSalary <= 1500){ 
 tax = taxSalary*0.03; 
 }else if( taxSalary <= 4500){ 
 tax = taxSalary*0.1-105; 
 }else if( taxSalary <= 9000){ 
 tax = taxSalary*0.2-555; 
 }else if( taxSalary <= 35000){ 
 tax = taxSalary*0.25-1005; 
 }else if( taxSalary <= 55000){ 
 tax = taxSalary*0.3-2755; 
 }else if( taxSalary <= 80000){ 
 tax = taxSalary*0.35-5505; 
 }else{ 
 tax = taxSalary*0.45-13505; 
 } 
 System.out.println("个人应缴纳税款为:"+tax); 
 } 
} 

9、输入年份和月份,输出天数。

package demo; 
 
import java.util.Scanner; 
/* 
 提示: 
 1.需要判断是否是闰年,2月份的天数跟是否是闰年有关系; 
 2.用switch-case判断每个月的天数 
 
 */ 
public class demo{ 
 public static void main(String[] args) { 
 Scanner scanner = new Scanner(System.in); 
 System.out.println("请输入年份:"); 
 int year = scanner.nextInt(); 
 System.out.println("请输入月份:"); 
 int month = scanner.nextInt(); 
 
 int dayNum = theDayNum(month); //先根据月份得出天数,如果是闰年,对2月份的天数重新获取 
 
 if(isLeapYear(year)){ 
 if(month == 2){ 
 dayNum ++; //如果是闰年,2月份增加一天 
 } 
 System.out.print(year + "是闰年,"); 
 }else{ 
 System.out.print(year + "不是闰年,"); 
 } 
 
 System.out.println(year + "年" + month + "月份共有" + dayNum + "天"); 
 } 
 
 /*判断是否是闰年 
 * 能被4整除但不能被100整除,或者能被400整除,是闰年 
 */ 
 public static boolean isLeapYear(int year) { 
 if((year % 4 ==0 && year % 100 !=0) || year%400 ==0){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 
 /*判断天数*/ 
 public static int theDayNum(int month) { 
 switch (month) { 
 case 1: 
 return 31; 
 case 2: 
 return 28; 
 case 3: 
 return 31; 
 case 4: 
 return 30; 
 case 5: 
 return 31; 
 case 6: 
 return 30; 
 case 7: 
 return 31; 
 case 8: 
 return 31; 
 case 9: 
 return 30; 
 case 10: 
 return 31; 
 case 11: 
 return 30; 
 case 12: 
 return 31; 
 default: 
 System.out.println("对不起,您输入的月份有误!"); 
 return 0; 
 } 
 
 } 
}

10、输出九九乘法表。

package demo; 
 
/* author:wendy 
 * 问题: 
 * 直接输出九九乘法表 
 * */ 
public class demo { 
 
 public static void main(String[] args) { 
 //i变量用于控制行数 
 for(int i = 0; i <= 9; i++) { 
 //j变量用于控制每行中参与计算的数值 
 for(int j = 1; j <= i; j++) { 
 System.out.print(j + "*" + i + "=" + i*j + "\t"); 
 } 
 //每行输出之后需要换行 
 System.out.println(); 
 } 
 } 
}<strong> 
</strong> 

11、随机产生一个从0-100之间的整数,判断是否是质数 质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 。

package demo; 
 
import java.util.Random; 
 
public class primeNum { 
 public static void main(String[] args) { 
 int num; 
 Random random = new Random(); 
 num = random.nextInt(100); 
 System.out.println("随机产生的数为:" + num); 
 System.out.println(isPrime(num)); 
 } 
 
 public static boolean isPrime(int num) { 
 if(num < 2) { 
 return false; 
 } 
 
 if(num == 2) { 
 return true; 
 } 
 
 if(num % 2 == 0) { 
 return false; 
 } 
 
 for(int i = 3; i <= Math.sqrt(num); i += 2) { 
 if(num % i == 0) { 
 return false; 
 } 
 } 
 return true; 
 } 
} 

12、查找数组最小值,并将数组扩容成新数组。

package demo; 
 
import java.util.Arrays; 
import java.util.Random; 
/* 
 * author:wendy 
 * 问题:随机产生10个从0-100之间的整数,并查找最小值; 
 * 将该数组扩容成新数组,把最小值存在新数组的第一个位置。 
 * 步骤: 
 * 1.构造一个长度为10的数组,利用Random随机产生10个0-100之间的整数; 
 * 2.寻找最小值,利用for循环 
 * 3.扩容 利用Arrays.coprOf()构造新数组,将其长度设置为11 
 * 4.遍历新数组,从后往前遍历,以此赋值,然后将2中找到的最小值存在数组的第一个 
 * */ 
public class copyOf { 
 
 public static void main(String[] args) { 
 int [] arr = new int[10]; 
 
 //随机产生10个 0-100之间的整数 
 Random random = new Random(); 
 for(int i = 0; i < 10; i ++) { 
 arr[i] = random.nextInt(100); 
 } 
 //打印数组的内容 
 System.out.println("随机产生的数组为:" + Arrays.toString(arr)); 
 
 //查找最小的值 
 int min = arr[0]; 
 for(int j = 1; j < 10; j ++) { 
 if(min > arr[j]) { 
 min = arr[j]; 
 } 
 } 
 System.out.println("该数组最小的值为:" + min); 
 
 //扩容,将最小值存在扩容之后的第一个 
 int [] newArr = Arrays.copyOf(arr, 11); 
 
 //从后往前遍历,将前面的值赋给后面的值,然后将第一个的值赋为最小值min 
 for(int k = newArr.length-1; k >=1; k --) { 
 newArr[k] = newArr[k-1]; 
 } 
 //将第一个的值赋为最小值min 
 newArr[0] = min; 
 //打印数组的内容 
 System.out.println("扩容之后的数组为:"+ Arrays.toString(newArr)); 
 } 
 
} 

这篇文章主要内容对初次接触Java算法和思维的学员有很大的帮助,小编会给大家提供相关帮助,请多多关注脚本之家。

相关文章

  • idea热部署插件jrebel正式版及破解版安装详细图文教程

    idea热部署插件jrebel正式版及破解版安装详细图文教程

    这篇文章主要介绍了idea热部署插件jrebel正式版及破解版安装详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Kafka日志清理实现详细过程讲解

    Kafka日志清理实现详细过程讲解

    这篇文章主要为大家介绍了Kafka日志清理实现详细过程讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Java @Deprecated注解的作用及传递性

    Java @Deprecated注解的作用及传递性

    用 @Deprecated注解的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择,本文给大家介绍java @deprecated注解的作用及传递性,对本文感兴趣的朋友一起学习吧
    2015-12-12
  • Java实现多项式乘法代码实例

    Java实现多项式乘法代码实例

    今天小编就为大家分享一篇关于Java实现多项式乘法代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java中的CyclicBarrier同步屏障详解

    Java中的CyclicBarrier同步屏障详解

    这篇文章主要介绍了Java中的CyclicBarrier同步屏障详解,CyclicBarrier也叫同步屏障,在JDK1.5被引入,可以让一组线程达到一个屏障时被阻塞,直到最后一个线程达到屏障时,屏障才会开门,所有被阻塞的线程才会继续执行,需要的朋友可以参考下
    2023-09-09
  • Java实现的对称加密算法AES定义与用法详解

    Java实现的对称加密算法AES定义与用法详解

    这篇文章主要介绍了Java实现的对称加密算法AES,结合实例形式分析了对称加密算法AES的定义、特点、用法及使用场景,需要的朋友可以参考下
    2018-04-04
  • java实现即时通信的完整步骤分享

    java实现即时通信的完整步骤分享

    这篇文章主要给大家介绍了关于java实现即时通信的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 解决Idea查看源代码警告Library source does not match the bytecode for class XXX问题

    解决Idea查看源代码警告Library source does not mat

    在使用IDEA开发时,遇到第三方jar包中的源代码和字节码不一致的问题,会导致无法正确打断点进行调试,这通常是因为jar包更新后源代码没有同步更新造成的,解决方法是删除旧的jar包,通过Maven重新下载或手动下载最新的源代码包,确保IDE中的源码与字节码版本一致
    2024-10-10
  • SpringMVC实现账号只能在一处登陆

    SpringMVC实现账号只能在一处登陆

    这篇文章主要为大家详细介绍了SpringMVC如何实现账号只能在一处登陆,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • springboot调用HTML文件注意事项及说明

    springboot调用HTML文件注意事项及说明

    这篇文章主要介绍了springboot调用HTML文件注意事项及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论