博客昵称:架构师Cool
最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。
作者简介:一名Coder,欢迎关注小弟!
博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮助
百万笔记知识库, 所有基础的笔记都在这里面啦,点击左边蓝字即可获取!助力每一位未来架构师!
欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
编程题目解析
- 实验一
- 1、helloworld
- 1-1、题目
- 1-2、代码
- 2、更正语法错误
- 2-2、代码
- 实验二
- 1、打印一首诗
- 1-1、题目
- 1-2、代码
- 2、打印学生名单
- 2-1、题目
- 2-2、代码
- 3、加号(“+”)的两个作用
- 3-1、题目
- 3-2、代码
- 4、表达式计算
- 4-1、题目
- 4-2、代码
- 5、计算圆面积与周长
- 5-1、题目
- 5-2、代码
- 实验三
- 1、浮点数计算
- 1-1、题目
- 1-2、代码
- 2、时间转换
- 2-1、题目
- 2-2、代码
- 3、钱币计算
- 3-1、题目
- 3-2、代码
- 实验四
- 1、town字符串
- 1-1、题目
- 1-2、代码
- 2、计算斜边长度
- 2-1、题目
- 2-2、代码
- 3、String类的一些用法
- 3-1、题目
- 3-2、代码
- 实验五
- 1、Activities at Lake LazyDays
- 1-1、题目
- 1-2、代码
- 2、Factorials
- 2-1、题目
- 2-2、代码
实验一
1、helloworld
1-1、题目
输出hello world
1-2、代码
public class demo01 {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2、更正语法错误
//**********************************************
// Problems.java
// Provide lots of syntax errors for the user to correct.
//**********************************************
public class problems
{
public Static main(string[] args)
{
System.out.println(“!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!”);
System.out.println(This program used to have lots of problems,”);
System.out.println(“but if it prints this, you fixed them all.”)
System.out.pirntln(“ ***Hurray! ***);
System.out.println(“!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!”);
}
}
2-2、代码
public class problem {
public static void main(String[] args) {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
System.out.println("This program used to have lots of problems,");
System.out.println("but if it prints this, you fixed them all.");
System.out.println(" ***Hurray! ***");
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
实验二
1、打印一首诗
1-1、题目
编写一段Java程序,打印如下信息:“Roses are red”。程序应该包含一个main方法(参照例子Lincoln.java。注意一下事项:
1、类名必须与文件名相匹配(不包括扩展名.java)
2、main方法的定义必须位于类内部(在第一个“{”和最后一个“}”之间)
3、打印信息的语句必须位于main方法内
4、添加必要的注释:程序文件名称;主要功能介绍;程序中主要语句的解释。
1-2、代码
public class Lincoln {
public static void main(String[] args) {
// 这里使用一个数组来装四个元素
String[] str = {"Roses are red" ,
"Violets are blue" ,
"Sugar is sweet" ,
"And so are you!"};
// 使用增强for循环来遍历数组
for (String s : str) {
System.out.println(s);
}
}
}
2、打印学生名单
2-1、题目
开发一段程序,用于打印学生姓名和其他信息的一个列表。使用转义符“\t”有助于安排输出信息的格式。请先阅读下面给出的程序Names.java。
1. 将Names.java保存至本地文件夹。编译并运行,查看结果。
2.添加你本人和至少另外两位同学的姓名和籍贯至程序中。保存、编译并运行,查看结果。保证输出的结果行列之间对齐。
3. 修改程序,添加一个第3列“Major”至程序中。假设Sally的专业是Computer Science,Alexander的专业是Math。注意第3列的表头是“Major”,以及行列对其(要使用“\t”转义符)。
2-2、代码
public class Names {
public static void main(String[] args) {
System.out.println();
// 姓名 籍贯 主修
System.out.println("\tName\t\tHometown\t\tMajor");
System.out.println("\t====\t\t========\t\t====");
System.out.println ("\tSally\t\tRoanoke\t\t\tComputer Science");
System.out.println("\tAlexander\tWashington\t\tMath");
System.out.println ("\t张三\t\t\t福建\t\t\t\t软件工程");
System.out.println ("\t李四\t\t\t福建\t\t\t\t软件工程");
System.out.println ("\t王五\t\t\t福建\t\t\t\t软件工程");
System.out.println();
}
}
3、加号(“+”)的两个作用
3-1、题目
在Java中,加号(“+”)可以用于数字相加,或者字符串的连接。当使用字符串时,应保证字符串的所有内容在同一行。下面是一个错误的例子:
System.out.println(“It is NOT okay to go to the next line
in a Long String!!!”);
如果字符串过长,解决的办法是将长字符串拆分成两个或多个短字符串,以加号连接。下面是一个正确的例子:
System.out.println(“It is Okay to break a long string into” +
“parts and join them with a + sympol.”);
因此,当加号用于字符串之间时,表示将两个字符串相连。但是,当其用于两个数字之间时,就表示数学上的相加。
- 仔细阅读PlusTest.java文件,观察加号在不同设置下的行为表现:
a. 阅读文件PlusTest.java文件中的源程序
b. 将PlusTest.java保存至个人目录。
c. 编译并运行程序。将最后面三行语句的输出结果记录下来,注意以下要点。
当“+”两边都是操作数的时候,该符号被看做“加号”。
当“+”两边至少有一个字符串的时候,该符号被看做连接符。
如果一个表达式中包含了不只一个“+”,那么括号中的表达式具有优先计算顺序。如果没有括号,加号的计算顺序是从左至右。
- 使用“+”编写一个Java程序,输出结果如下所示:
Ten robins plus 13 canaries is 23 birds.
要求:程序只能使用一条调用println方法的语句。必须使用“+”来实现加法操作和字符串连接。
3-2、代码
public class PlusTest {
public static void main(String[] args) {
System.out.println("8 plus 5 is" + 8 + 5);
System.out.println("8 plus 5 is" + (8 + 5));
System.out.println(8 + 5 + " equals 8 plus 5.");
System.out.println("Ten robins plus "+(5+8)+" canaries is 23 birds.");
}
}
4、表达式计算
4-1、题目
按照以下给出的声明,请回答每个表达式的运算结果
4-2、代码
public class sum {
public static void main(String[] args) {
int a = 3,b=10,c=7;
double w = 12.9,y=3.2;
System.out.println("a." + a + b * c);
System.out.println("b." + (a - b - c));
System.out.println("c." + a / b);
System.out.println("d." + b / a);
System.out.println("e." + (a - b / c));
System.out.println("f." + w / y);
System.out.println("g." + y / w);
System.out.println("h." + a + w / b);
System.out.println("i." + a % b / y);
System.out.println("j." + b % a);
System.out.println("k." + w % y);
}
}
5、计算圆面积与周长
5-1、题目
下面这段程序使用了变量和常量,仔细阅读,然后完成后面的练习。
注意事项:
Main方法里面的前3行语句声明了PI,半径radius和面积area。注意每个标识符的数据类型:PI是final double,因为它是一个浮点型常量;半径是整型int变量;面积是double型变量。
前3行语句给三个变量赋值,因此也就将它们实例化。也可以采取其他方法处理,比如将声明和实例化分开处理,相比之下,不如前者简洁。
接下来的一行用于输出一条语句,显示给定半径的圆面积。
在下面一行语句是一条赋值语句,将半径值设定为20。注意这并不是一个声明,所以此处并未出现int。我们使用同一内存位置来存储半径的值20和10,重新赋值的过程并没有分配新的内存空间。
与此相同,再下一行的赋值语句也不会出现double。
最后输出的程序结果输出以新半径值计算的圆面积。
保存文件Circle.java至本地目录,按照以下要求修改该程序:
-
按照圆的周长公式。在程序中增加语句,以计算圆周长。按照以下步骤进行:
声明一个新变量,用以存储周长值;
每次计算周长值之后,将结果保存至该变量;
另外增加打印语句,打印你的结果。 -
如果半径值翻倍,那么圆的周长和面积会发生怎样的变化?改写上面的程序,输出以下内容:1)原始半径值条件下的周长和面积;2)半径增大一倍后圆的周长和面积;3)半径变化前后两个周长的比值,以及两个面积的比值。请改写本程序,重新声明变量,即两个周长,两个面积。按照以下步骤进行:
改变原程序中面积和周长变量的名称,以便于区分新声明的变量名称;
在程序最后面,计算半径改变前后两个周长的比值,以及两个面积的比值,输出结果; -
上面的程序给出了在半径值为10和20的情况下,圆周长和面积的计算结果。这是属于一种硬编码(Hardcoded)的形式。为了使程序更为灵活,可以计算任何半径值情况下的周长和面积值,请尝试改写程序。按照以下步骤进行:
在文件的顶端,增加以下语句:
import java.util.Scanner
这行程序告诉编译器程序将使用util包中的Scanner类。在主方法中,创建Scanner的对象scan,用于读取来自于System.in的数据。
声明radius变量,但并不赋值。增加两行语句用于从用户端读取半径值:
输出一行提示符,告诉用户将要从从键盘读取数据,比如:Please enter a value for the radius!
一条实际读取输入流信息的语句。我们已经假设半径数据类型为整型,因此使用Scanner类的nextInt()方法来读取输入值。
5-2、代码
import java.util.Scanner;
public class Circle {
public static void main(String[] args) {
int radius = 10;
final double PI = 3.14159; //定义周长
double perimeter;//周长
double area = PI * radius * radius;
perimeter = 2 * PI * radius;
System.out.println("The area of a circle with radius " + radius +
" is " + area);
System.out.println("半径为 " + radius + " 的圆的周长为:" + perimeter);
System.out.println("-------------");
//将半径值设为20
radius = 20;
area = PI * radius * radius;
perimeter = 2 * PI * radius;
System.out.println("The area of a circle with radius " + radius +
" is " + area);
System.out.println("半径为 " + radius + " 的圆的周长为:" + perimeter);
System.out.println("-------------");
//定义原始半径值
radius = 20;
//定义新周长、面积
double perimeter_1, area_1;
perimeter_1 = PI * radius * 2;
area_1 = PI * radius * radius;
System.out.println("The area of a circle with radius " + radius +
" is " + area_1);//面积
System.out.println("半径为 " + radius + " 的圆的周长为:" + perimeter_1);
//半径增大一倍
radius = 40;
perimeter_1 = PI * radius * 2;
area_1 = PI * radius * radius;
System.out.println("The area of a circle with radius " + radius + " is " + area_1);//面积
System.out.println("半径为 " + radius + " 的圆的周长为:" + perimeter_1);
System.out.println("-----------");
System.out.println("半径前后变化的周长之间的比值: " + (perimeter/perimeter_1));
System.out.println("半径前后变化的面积之间的比值: " + (area/area_1));
System.out.println("----------");
Scanner scan = new Scanner(System.in);
System.out.println("Please enter a value for the radius!");
int radius_2 = scan.nextInt();
System.out.println("输入的半径为:" + radius_2);
double perimeter_2,area_2;
perimeter_2 = PI * radius_2 * 2;
area_2 = PI * radius_2 * radius_2;
System.out.println("The area of a circle with radius " + radius_2 + " is " + area_2);//面积
System.out.println("半径为 " + radius_2 + " 的圆的周长为:" + perimeter_2);
}
}
实验三
1、浮点数计算
1-1、题目
编写一个应用程序,读取两个浮点数,然后打印输出他们的和、差及乘积。
1-2、代码
import java.util.Scanner;
public class demo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
float f1 = sc.nextFloat();
float f2 = sc.nextFloat();
System.out.println(f1+f2);
System.out.println(f1-f2);
System.out.println(f1*f2);
}
}
2、时间转换
2-1、题目
编写一个应用程序,以小时、分、秒读取时间长度,然后全部换算成秒并打印输出结果(例如,1小时28分42秒等于5322秒)。
2-2、代码
import java.util.Scanner;
public class demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入小时数:");
int hours = scanner.nextInt();
System.out.print("请输入分钟数:");
int minutes = scanner.nextInt();
System.out.print("请输入秒数:");
int seconds = scanner.nextInt();
int totalSeconds = (hours * 3600) + (minutes * 60) + seconds;
System.out.println("总共的秒数为:" + totalSeconds + "秒");
scanner.close();
}
}
3、钱币计算
3-1、题目
编写一个程序,提示输入一个代表总钱数的双精度值,然后确定每种纸币和硬币需要的最少数量以达到输入的总钱数。假设人民币种类如下:佰圆纸钞,伍拾圆纸钞,贰拾圆纸钞,拾圆纸钞,伍圆纸钞,壹圆硬币,伍角硬币,壹角硬币,壹分硬币。(提示:使用求模运算符,自上而下求得每种钱币的数量)。
例如,输入值为127.63元人民币,那么程序应当输出如下结果:
1张佰圆纸钞;
0张伍拾圆纸钞;
1张贰拾圆纸钞;
0张拾圆纸钞;
1张伍圆纸钞;
2个壹圆硬币;
1个伍角硬币;
1个壹角硬币;
3个壹分硬币。
3-2、代码
import java.util.Scanner;
public class demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入总钱数(元):");
double totalMoney = scanner.nextDouble();
int hundred = (int) totalMoney / 100;
totalMoney %= 100;
int fifty = (int) totalMoney / 50;
totalMoney %= 50;
int twenty = (int) totalMoney / 20;
totalMoney %= 20;
int ten = (int) totalMoney / 10;
totalMoney %= 10;
int five = (int) totalMoney / 5;
totalMoney %= 5;
int one = (int) totalMoney;
int coins = (int) Math.round((totalMoney - one) * 100);
int fiftyCents = coins / 50;
coins %= 50;
int tenCents = coins / 10;
coins %= 10;
int oneCent = coins;
System.out.println(hundred + "张佰圆纸钞");
System.out.println(fifty + "张伍拾圆纸钞");
System.out.println(twenty + "张贰拾圆纸钞");
System.out.println(ten + "张拾圆纸钞");
System.out.println(five + "张伍圆纸钞");
System.out.println(one + "个壹圆硬币");
System.out.println(fiftyCents + "个伍角硬币");
System.out.println(tenCents + "个壹角硬币");
System.out.println(oneCent + "个壹分硬币");
scanner.close();
}
}
实验四
1、town字符串
1-1、题目
填写以下空格
(a)声明一个变量town,将其指向一个字符串类型,并初始化为“Anytown, USA”;
(b)写一个赋值语句,调用字符串类的length方法,返回”college”字符串对象的长度,并将其赋值给变量stringLength;
(c)完成赋值语句,使change1变量包含与college相同的字符,但是全部大写;
(d)完成赋值语句,使change2包含与change1相同的字符,但是所有字符“O”全部要用“*”替换。
(e)完成赋值语句,将college和town两个字符串连接起来,并把值赋给change3(使用String类的concat方法)。
1-2、代码
public class StringPlay{
public static void main(String[] args) {
String college = new String("PoDunk College");
String town = "Anytown, USA"; //partA
int stringLength;
String change1,change2,change3;
stringLength = college.length(); //partB
System.out.println(college+"contains"+stringLength+"characters");
change1=college.toUpperCase(); //partC
change2=college.toUpperCase().replace("O","*"); //partD
change3=college.concat(town); //partE
System.out.println("The final string is "+change3);
}
}
2、计算斜边长度
2-1、题目
以下程序读入直角三角形的两条直边的值,然后计算斜边的边长(斜边的计算方法:直边平方之和的平方根)。将程序里面的空格填写完整,注意要使用Math类的方法。
2-2、代码
import java.util.Scanner;
public class RightTriangle{
public static void main(String[] args) {
double side1,side2;
double hypotenuse;
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the lengths of the two sides of "+
"a right triangle");
side1 = sc.nextDouble();//
side2 = sc.nextDouble();//
hypotenuse = Math.sqrt(Math.pow(side1, 2) + Math.pow(side2, 2));//
System.out.println("Length of the hypotenuse "+ hypotenuse);
}
}
3、String类的一些用法
3-1、题目
以下程序阐述了String类的一些用法。仔细阅读该程序,理解其功能。
上面的程序保存在文件StringManips.java中。将文件放置在本地路径下,编译并运行。仔细查看程序的输出结果,然后按照以下要求修改程序:
- 声明一个名为middle3的字符串类型变量,将声明变量放在程序的顶端,使用一个赋值语句和substring方法,将phrase字符串中间三个字符赋值给middle3变量(该字符串中间的字符,及其左右各一个字符)。添加一个打印语句,用于输出结果。保存,编译并运行该程序。
- 添加一个赋值语句,替代swithchedPhrase字符串中的所有空格为“*”。该结果应该返回给switchPhrase。
- 声明两个新的字符串类型变量city和state。添加语句,提示用户输入他们的籍贯所在的city和state,并使用Scanner类读入该信息。然后使用String类创建并打印一个新字符串,包含state名(全部大写),city名(全部小写),state名(全部大写)。如下例所示:
NORTH CAROLINAlilesvilleNORTH CAROLINA
3-2、代码
import java.util.Scanner;
public class RightTriangle{
public static void main(String[] args) {
double side1,side2;
double hypotenuse;
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the lengths of the two sides of "+
"a right triangle");
side1 = sc.nextDouble();//
side2 = sc.nextDouble();//
hypotenuse = Math.sqrt(Math.pow(side1, 2) + Math.pow(side2, 2));//
System.out.println("Length of the hypotenuse "+ hypotenuse);
}
}
实验五
1、Activities at Lake LazyDays
1-1、题目
你在Lake LazyDays度假村的工作是按照天气状况给客人提供活动建议。以下是一个活动列表:
temp >= 80: swimming;
60 <= temp < 80: tennis;
40 <= temp < 60: golf;
temp < 40: skiing.
- 编写一段程序,提示用户输入一个气温值,然后打印出适合该气温的活动。提示:使用if-else语句,并确保你的条件设定不必过于复杂。
- 修改程序,在temp>95或者temp < 20的情况下,打印“Visit our shops!"。提示:在条件表达式中使用布尔运算符。
1-2、代码
import java.util.Scanner;
public class ActivitySuggestion {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入当前的气温:");
int temperature = scanner.nextInt();
boolean hot = temperature >= 80;
boolean mild = temperature >= 60 && temperature < 80;
boolean cool = temperature >= 40 && temperature < 60;
boolean cold = temperature < 40;
if (hot) {
System.out.println("适合的活动是游泳");
} else if (mild) {
System.out.println("适合的活动是打网球");
} else if (cool) {
System.out.println("适合的活动是打高尔夫");
} else if (cold) {
System.out.println("适合的活动是滑雪");
} else {
System.out.println("Visit our shops!");
}
}
}
2、Factorials
2-1、题目
n的阶乘(n!)表示整数从1到n的乘积。比如,4!=123*4=24。另外,0!=1。阶乘不适用于负数。
- 编写一段程序,请用户输入一个非负整数,然后打印该整数的阶乘。请使用while循环语句编写程序。请考虑用户输入0的情况。
- 修改程序,检查用户是否输入非负整数。如果输入的负数,则提示用户输入非负整数,并请用户重新输入,直到用户输入非负整数为止。
2-2、代码
import java.util.Scanner;
public class Factorials {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int anInt = sc.nextInt();
int tatol=0;
//遍历每个factor,并让他逐渐减少1,直至到1
for (int i = anInt; i >1; i--) {
tatol+=factor(i);
}
System.out.println(tatol);
}
/*static int factor(int n){
//设置一个函数用于统计函数1*2...*n的乘积
int sum=1;
if (n==0) return 1;
for (int i = 1; i <= n; i++) {
sum*=i;
}
return sum;
}*/
static int factor(int n){
int sum=1;
int i=1;
if (n==0) return 1;
while ( i !=n+1){
sum*=i;
i++;
}
return sum;
}
}