编程经典问题的第一部分贴出来后,一些朋友指出我的一些程序把问题复杂化了,而且给出了更简单的解法。非常感谢这些留言,使我学习到了东西。现在我再贴出今天做的几个题
package com.sailor.game;
import java.util.Scanner;
/**
* 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,
* 低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,
* 高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,
* 可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
*
* @author Sailor
*
*/
public class Prize_Problem {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入这个月的利润(万元):");
double profit = in.nextDouble();
System.out.println("奖金为(万元):" + getPrize(profit));
}
public static double getPrize(double profit) {
double temp;
double prize = 0;
if (profit > 100) {
temp = profit - 100;
prize += temp * 0.01;
profit -= temp;
}
if (profit > 60) {
temp = profit - 60;
prize += temp * 0.015;
profit -= temp;
}
if (profit > 40) {
temp = profit - 40;
prize += temp * 0.03;
profit -= temp;
}
if (profit > 20) {
temp = profit - 20;
prize += temp * 0.05;
profit -= temp;
}
if (profit > 10) {
temp = profit - 10;
prize += temp * 0.075;
profit -= temp;
}
if (profit <= 10) {
prize += profit * 0.1;
}
return prize;
}
}
package com.sailor.game;
import java.util.Scanner;
/**
* 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
*
* @author Sailor
*/
public class Reverse_Order_Output {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个不多于五位的整数:");
int n = in.nextInt();
if (n > 99999 || n < 0) {
System.out.println("输入的数不符合要求");
System.exit(1);
}
System.out.println(getDigitS(n));
System.out.println(reverse_order(n));
}
// 将一个不大于5位的整数的反序后的数返回
public static int reverse_order(int n) {
int result = 0;
int exp = 0;// 从最高位开始累加
for (int i = 4; i >= 0; i--) {
int temp = (int) (n / Math.pow(10, i));
if (temp > 0 || exp > 0) {
result += (int) (temp * Math.pow(10, exp));
exp++;
n = (int) (n % Math.pow(10, i));
}
}
return result;
}
// 获得一个不大于5位数的位数
public static String getDigitS(int n) {
String digits = "";
if (n / 10000 > 0) {
digits = "五位数";
} else if (n / 1000 > 0) {
digits = "四位数";
} else if (n / 100 > 0) {
digits = "三位数";
} else if (n / 10 > 0) {
digits = "二位数";
} else {
digits = "一位数";
}
return digits;
}
}
package com.sailor.game;
import java.util.Scanner;
/**
* @author Sailor
*
* 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
*
*/
public class StringCaculate {
public static void main(String[] args) {
System.out.println("请输入字符串:");
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(getResult(str));
}
@SuppressWarnings("static-access")
public static String getResult(String str) {
int digitNum = 0;// 数字个数
int letterNum = 0;// 字母个数
int blankNum = 0;// 空格个数
int otherNum = 0;// 其他符号个数
for (int i = 0; i < str.length(); i++) {
Character ch = new Character(str.charAt(i));
if (ch.isDigit(ch)) {
digitNum++;
} else if (ch.isLetter(ch)) {
letterNum++;
} else if (ch.isSpaceChar(ch)) {
blankNum++;
} else {
otherNum++;
}
}
return str + "中\n数字个数为:" + digitNum + "\n字母个数为:" + letterNum
+ "\n空格个数为:" + blankNum + "\n其他字符个数为: " + otherNum;
}
}
package com.sailor.game;
/**
* 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 程序分析:请抓住分子与分母的变化规律。
*
* @author Sailor
*
*/
public class Sum_Problem {
public static void main(String[] args) {
double sum = 0;
String formula = "";
for (int i = 1; i <= 20; i++) {
formula += (getFibonacci(i + 2) + "/" + getFibonacci(i + 1));
formula += (i == 20 ? "" : "+");
sum += getFibonacci(i + 2) / getFibonacci(i + 1);
}
System.out.println(formula + "=" + sum);
}
/**
* 获得斐波拉契数列的项
*
* @param n
* @return
*/
public static int getFibonacci(int n) {
if (n == 1 || n == 2)
return 1;
else
return getFibonacci(n - 1) + getFibonacci(n - 2);
}
}
package com.sailor.game;
import java.util.Scanner;
/**
*
* @author Sailor
* 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
* 几个数相加有键盘控制。
*
*/
public class Superposition {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
long result = 0;
Scanner in = new Scanner(System.in);
System.out.println("请依次输入相加次数、数字");
num1 = in.nextInt();
num2 = in.nextInt();
String resultStr = "";
for (int i = 1; i <= num1; i++) {
for(int j=0;j<i;j++){
resultStr+=num2;
}
if(i!=num1){
resultStr+="+";
}
result += (num2 * i * (Math.pow(10, num1-i)));
}
System.out.println(resultStr+"="+result);
}
}
分享到:
相关推荐
《数据结构与问题求解Java语言版第4版》是一本深入探讨数据结构及其在问题求解中应用的专业书籍,特别关注使用Java编程语言来实现这些概念。这本教材不仅涵盖了数据结构的基础知识,还强调了如何利用这些知识来解决...
Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 ...
城市遍历求解问题在计算机科学中是一个经典的图论问题,通常被用来模拟旅行者试图以最有效的方式访问一系列城市。在这个Java课程设计项目中,我们可能会遇到如何使用编程技术来解决这一问题的挑战。这个问题可以被视...
Java基础编程练习题和经典算法是提升编程技能和准备面试的关键环节。这50题的基础编程练习涵盖了Java语言的核心概念,如数据类型、控制结构、类与对象、异常处理、集合框架等,旨在帮助学习者巩固基础知识并提高编程...
这份资源包含的"JAVA基础编程练习题50题及经典算法90题"是学习和提升Java技能的理想材料。以下将分别介绍这些题目可能涵盖的知识点。 一、Java基础编程练习题50题: 这50题主要针对Java语法、数据类型、控制结构、...
《Java编程经典50题》是一本针对Java编程学习者的实战型资料,涵盖了从基础到进阶的各种编程问题。从提供的代码片段来看,这个PDF文件包含了一系列的Java编程练习题,涉及了不同的算法和编程技巧。以下是部分题目...
Java基于自适应遗传算法的TSP问题建模求解源代码是解决旅行商问题(Traveling Salesman Problem,简称TSP)的一种编程实现。旅行商问题是一个经典的组合优化问题,其核心是寻找最短的可能路线,使得一个旅行商能够...
总体而言,本书在内容组织上既有广度也有深度,既适合于计算机专业的学生作为入门教材,也适合有一定编程基础的技术人员深入了解Java编程及其相关技术。通过本书的学习,读者可以系统掌握Java程序设计的核心知识,并...
### Java 动态规划求解TSP问题 #### 一、问题描述 旅行商问题 (Traveling Salesman Problem, TSP) 是一个经典的组合优化问题,主要关注的是寻找一条访问一系列地点并返回出发地的最短路径。在这个问题中,旅行商...
综上所述,递归和迭代算法是程序设计中不可或缺的两种方法,它们在Java语言中的应用广泛,可以有效地帮助解决各种编程问题。通过学习和掌握这两种算法的使用,程序员可以更高效地利用Java语言,编写出高质量、性能...
通过理解这些Java源代码,工程师可以学习如何使用编程技术来解决系统可靠性问题,从而在设计和维护复杂系统时提高安全性。同时,这个工具也可以帮助教育工作者在教学过程中更直观地展示动态故障树分析的概念。
Java实验Java语言面向对象编程基础 本实验报告是关于Java语言面向对象编程基础的实验,旨在掌握Java语言的基本数据类型、变量、运算符、表达式、输入输出、流程控制、面向对象编程基础等知识点。 一、实验目的 本...
在计算机科学领域,背包问题是一种经典的优化问题,它涉及到如何在有限的容量限制下,从一组物品中选择最有价值的组合。贪心算法是解决这类问题的一种策略,它通过每一步选择局部最优解来期望得到全局最优解。在这个...
标题《50道JAVA基础编程练习题全面解答》说明了文档的主旨在于提供Java编程语言基础层面的练习题及其详细解答,这些练习题旨在帮助学习者巩固和加深对Java基础知识的理解和应用。描述部分进一步强调了通过这些编程...
根据给定文件的信息“Java经典问题算法大全”,我们可以推断出这份资料主要涵盖了Java编程语言中的经典算法问题及其解决方案。接下来,我们将详细探讨这一主题下的关键知识点。 ### 一、基础知识回顾 在深入讨论...
这些经典算法Java实现不仅有助于提升编程技能,而且对解决实际问题大有裨益。无论是面试准备,还是项目开发,熟悉并掌握这些算法都将大大提高开发者的能力。通过深入学习和实践,你将能够更好地理解和运用这些算法,...