java-7311练习(上)
java练习,仅供参考!
欢迎同学们交流讨论。
JDK 1.8 API帮助文档
JDK 1.6 API中文文档
Java GUI
-------------------------2016-10-23更新
HappyFace
package gui.test;import javax.swing.JApplet;
import java.awt.Graphics;
public class HappyFace extends JApplet
{
public void paint(Graphics canvas)
{
super.paint(canvas);
setSize(400,300);
canvas.drawOval(100, 50, 200, 200);
canvas.fillOval(155, 100, 10, 20);
canvas.fillOval(230, 100, 10, 20);
canvas.drawArc(150, 160, 100, 50, 180, 180);
}
}
HappyFaceJFrame
package gui.test;import java.awt.Graphics;
import javax.swing.JFrame;
public class HappyFaceJFrame extends JFrame
{
public HappyFaceJFrame()
{
setSize(400,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics canvas)
{
canvas.drawOval(100, 50, 200, 200);
canvas.fillOval(155, 100, 10, 20);
canvas.fillOval(230, 100, 10, 20);
canvas.drawArc(150, 160, 100, 50, 180, 180);
}
public static void main(String[] args)
{
HappyFaceJFrame guiwindow = new HappyFaceJFrame();
guiwindow.setVisible(true);
}
}
MultipleFaces
package gui.test;import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Color;
public class MultipleFaces extends JApplet
{
public static final int FACE_DIAMETER = 50;
public static final int X_FACE0 = 10;
public static final int Y_FACE0 = 5;
public static final int EYE_WIDTH = 5;
public static final int EYE_HEIGHT = 10;
public static final int X_RIGHT_EYE0 = 20;
public static final int Y_RIGHT_EYE0 = 15;
public static final int X_LEFT_EYE0 = 45;
public static final int Y_LEFT_EYE0 = Y_RIGHT_EYE0;
public static final int NOSE_DIAMETER = 5;
public static final int X_NOSE0 = 32;
public static final int Y_NOSE0 = 25;
public static final int MOUTH_WIDTH = 30;
public static final int MOUTH_HEIGHT0 = 0;
public static final int X_MOUTH0 = 20;
public static final int Y_MOUTH0 = 35;
public static final int MOUTH_START_ANGLE = 180;
public static final int MOUTH_EXTENT_ANGLE = 180;
public void paint(Graphics canvas)
{
setSize(500, 300);
int i, xOffset, yOffset; // Want i to exist after the loop ends
for (i = 0; i <= 4; i++)
{
// Draw one face:
xOffset = 50 * i;
yOffset = 30 * i;
// Draw face circle:
if (i % 2 == 0) // if i is even
{
// Make face light gray
//canvas.setColor(Color.LIGHT_GRAY);
canvas.setColor(Color.YELLOW);
canvas.fillOval(X_FACE0 + xOffset, Y_FACE0 + 30 * i, FACE_DIAMETER, FACE_DIAMETER);
}
canvas.setColor(Color.BLACK);
canvas.drawOval(X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER);
// Draw eyes:
canvas.setColor(Color.BLUE);
canvas.fillOval(X_RIGHT_EYE0 + xOffset, Y_RIGHT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT);
canvas.fillOval(X_LEFT_EYE0 + xOffset, Y_LEFT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT);
// Draw nose:
canvas.setColor(Color.BLACK);
canvas.fillOval(X_NOSE0 + xOffset, Y_NOSE0 + yOffset, NOSE_DIAMETER, NOSE_DIAMETER);
// Draw mouth:
canvas.setColor(Color.RED);
canvas.drawArc(X_MOUTH0 + xOffset, Y_MOUTH0 + yOffset, MOUTH_WIDTH, MOUTH_HEIGHT0 + 3 * i,
MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE);
}
// i is 5 when the previous loop ends
xOffset = 50 * i;
yOffset = 30 * i;
// Draw kissing face:
// Draw face outline:
canvas.setColor(Color.BLACK);
canvas.drawOval(X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER);
// Draw eyes:
canvas.setColor(Color.BLUE);
canvas.fillOval(X_RIGHT_EYE0 + xOffset, Y_RIGHT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT);
canvas.fillOval(X_LEFT_EYE0 + xOffset, Y_LEFT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT);
// Draw nose:
canvas.setColor(Color.BLACK);
canvas.fillOval(X_NOSE0 + xOffset, Y_NOSE0 + yOffset, NOSE_DIAMETER, NOSE_DIAMETER);
// Draw mouth in shape of a kiss:
canvas.setColor(Color.RED);
canvas.fillOval(X_MOUTH0 + xOffset + 10, Y_MOUTH0 + yOffset, MOUTH_WIDTH - 20, MOUTH_WIDTH - 20);
// Add text:
canvas.drawString("Kiss, Kiss.", X_FACE0 + xOffset + FACE_DIAMETER, Y_FACE0 + yOffset);
// Draw blushing face:
i++;
xOffset = 50 * i;
yOffset = 30 * i;
// Draw face circle:
canvas.setColor(Color.LIGHT_GRAY);
canvas.fillOval(X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER);
canvas.setColor(Color.BLACK);
canvas.drawOval(X_FACE0 + xOffset, Y_FACE0 + yOffset, FACE_DIAMETER, FACE_DIAMETER);
// Draw eyes:
canvas.setColor(Color.BLACK);
canvas.fillOval(X_RIGHT_EYE0 + xOffset, Y_RIGHT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT);
canvas.fillOval(X_LEFT_EYE0 + xOffset, Y_LEFT_EYE0 + yOffset, EYE_WIDTH, EYE_HEIGHT);
// Draw nose:
canvas.setColor(Color.BLACK);
canvas.fillOval(X_NOSE0 + xOffset, Y_NOSE0 + yOffset, NOSE_DIAMETER, NOSE_DIAMETER);
// Draw mouth:
canvas.setColor(Color.BLACK);
canvas.drawArc(X_MOUTH0 + xOffset, Y_MOUTH0 + yOffset, MOUTH_WIDTH, MOUTH_HEIGHT0 + 3 * (i - 2),
MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE);
// Add text:
canvas.drawString("Tee Hee.", X_FACE0 + xOffset + FACE_DIAMETER, Y_FACE0 + yOffset);
}
}
week1
1.1 编写第一个程序,输出“Hello world!”
package week1;/*任务1
*程序描述:编写第一个程序,输出“Hello world!”。
*/
public class Hello
{
public static void main(String[] args)
{
System.out.println("hello world!");
}
}
hello world!
1.2 输出你的 短期/长期 目标
package week1;/*任务2
*程序描述:
*编写程序,第一行输出你的姓名;之后空第一行;
*第 三及五行 输出你的 短期/长期 目标。
*输出如下:
*My name: ***
*
*My short-term objective:*****
*My long-term objective:***********
*/
public class MyLifeGoals
{
public static void main(String[] args)
{
System.out.println("My name:***\n");
System.out.println("My short-term objective:*****");
System.out.println("My long-term objective:***********");
}
}
My name:***My short-term objective:*****
My long-term objective:***********
1.3 多行输出 一个宽 12 个字符、高 10行 的字符“J”
package week1;/*
* 任务3
* 程序描述:通过在多行输出 J 来组成一个
* 宽 12 个字符、高 10行 的字符“J”。
*/
public class JLetter
{
public static void main(String[] args)
{
String str = "JAVA";
//输出 1-2 行
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
System.out.printf("%s", str);
}
System.out.println();
}
//输出 3-6 行
for (int i = 0; i < 4; i++)
{
//占位符长度包含字符本身的长度;即 10 = 4+6
System.out.printf("%10s\n",str);
}
//输出 7-8 行
System.out.printf("%s%9s\n","J",str);
System.out.printf("%s%8s\n","JA",str);
//输出 9-10 行
System.out.printf("%5s%s\n",str,str);
System.out.printf("%6s%s\n",str,"JA");
}
}
JAVAJAVAJAVAJAVAJAVAJAVA
JAVA
JAVA
JAVA
JAVA
J JAVA
JA JAVA
JAVAJAVA
JAVAJA
1.4 用户信息:姓名、年龄、期望工资及婚否
package week1;import java.util.Scanner;
/*
* 任务4
* 程序描述:
* (1) 首先定义四个变量,用来存放用户的姓名、年龄、期望工资及婚否
* (2) 分别接收用户输入的姓名、年龄、工资及婚否
* (3) 将这些信息分四行输出。
* 输出:
* 请输入你的姓名:周星星
* 请输入你的年龄:18
* 请输入你期望的工资:25000.9
* 你是否已婚(true代表已婚,false代表未婚):false
* 你的信息如下:
* 姓名:周星星
* 年龄:18
* 期望的工资:25000.9
* 婚姻状态:false
*/
public class UserInfo
{
public static void main(String[] args)
{
String name; //设置变量
int age;
float expected_salary;
boolean matital_status;
//从键盘接收数据
Scanner scan = new Scanner(System.in);
System.out.print("请输入你的姓名:");
name = scan.nextLine();
System.out.print("请输入你的年龄:");
age = scan.nextInt();
System.out.print("请输入你期望的工资:");
expected_salary = scan.nextFloat();
System.out.print("你是否已婚(true代表已婚,false代表未婚):");
matital_status = scan.nextBoolean();
scan.close(); // 关闭 Scanner 对象
System.out.println("你的信息如下:");
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("期望的工资:" + expected_salary);
System.out.println("婚姻状态:" + matital_status);
}
}
请输入你的姓名:周星星请输入你的年龄:18
请输入你期望的工资:25000.9
你是否已婚(true代表已婚,false代表未婚):false
你的信息如下:
姓名:周星星
年龄:18
期望的工资:25000.9
婚姻状态:false
1.5 User 类: get()、set()
package week1;/*
* 任务5
* 程序描述: 该实验的目标是生成 User 类。
* - 三个成员变量
* 姓名(name):字符串类型
* 年龄(age):整形
* 性别(gender):整形
* - 六个成员方法
* getName(): String
* setName(): void
* getAge(): int
* setAge(): void
* getGender():int
* setGender():void
*/
public class User
{
private String name;
private int age;
private int gender;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public int getGender()
{
return gender;
}
public void setGender(int gender)
{
this.gender = gender;
}
}
week2
-------------------------2016-10-14更新
2.1 我的Java成绩
package week2;import java.util.Scanner;
/*
* 任务 1
*程序描述:
*接收用户从键盘上输入的 3 项 Java 成绩:课堂活跃度(activity)、作业(homework)、 考试(exam);
*之后从键盘上接收用户输入的这三项在最终成绩中的比例,分别为 activityPercent 占 30%、
*homeworkPercent 占 30%和 examPercent 占 40%。最终按比例计算最 终成绩并输出。
*/
public class Score
{
public static void main(String[] args)
{
int score_activity;
int score_homework;
int score_exam;
float score_total;
Scanner scan = new Scanner(System.in);
System.out.println("以下是3项Java成绩,请按提示输入");
System.out.print("请输入 课堂活跃度 成绩:");
score_activity = scan.nextInt();
System.out.print("请输入 作业 成绩:");
score_homework = scan.nextInt();
System.out.print("请输入 考试 成绩:");
score_exam = scan.nextInt();
scan.close();
score_total = (float)
( score_activity * 0.3
+ score_homework * 0.3
+ score_exam * 0.4
);
System.out.println("你的总成绩为:" + score_total);
}
}
以下是3项Java成绩,请按提示输入请输入 课堂活跃度 成绩:86
请输入 作业 成绩:91
请输入 考试 成绩:77
你的总成绩为:83.9
2.2 颠倒输出一个三位整数
package week2;import java.util.Scanner;
/*
* 任务 2
* 程序描述:
* 接收用户输入的一个三位整数(假设用户一定会输入一个三位整数),将其如 123 的数位颠倒,输出 321。
*/
public class ReverseNumber
{
public static void main(String[] args)
{
//定义一个三位整数(number)的个位(unit)、十位(ten)、百位(hundred)
int number, unit, ten, hundred;
Scanner scan = new Scanner(System.in);
System.out.print("请输入一个三位整数:");
number = scan.nextInt();
scan.close();
unit = number%10; //取个位
ten = number%100/10; //取十位
hundred = number/100; //取百位
System.out.println("这个数逆向输出为:" + unit + ten + hundred);
}
}
请输入一个三位整数:198这个数逆向输出为:891
2.3 一元二次方程--根的判别式
程序描述:接收用户从键盘输入的 a、b、c 值,然后利用公式计算两个根的值。
输出如下:
Let $ ax^2 + bx + c = 0 (a \neq 0), \(
\) \Large x_1=\frac{-b + \sqrt{b^2-4ac}}{2a}, \(
\) \Large x_2=\frac{-b - \sqrt{b^2-4ac}}{2a}, $
when $ \Delta=b^2-4ac $ only one repeated root
when $ \Delta>0 $ two real roots
when $ \Delta<0 $ two real roots
package week2;import java.util.Scanner;
/*
* 任务3
* 程序描述:
* 接收用户从键盘输入的 a、b、c 值,然后利用公式计算两个根的值。
*/
public class Quadratic
{
/*
* 关于类Math(java.lang.Math)的2个函数:
* 1.sqrt(double a) 返回正确舍入的 double 值的正平方根
* 2.pow(double a, double b) 返回第一个参数的第二个参数次幂的值
* 更多可访问:http://docs.oracle.com/javase/8/docs/api/
*/
public static void main(String[] args)
{
double a,b,c; //一元二次方程各项系数
Scanner scan = new Scanner(System.in);
System.out.print("Insert value for a: ");
a = scan.nextDouble();
System.out.print("Insert value for b: ");
b = scan.nextDouble();
System.out.print("Insert value for c: ");
c = scan.nextDouble();
scan.close();
System.out.println("Let " + a + "x^2 + " +b+ "x + " + c + " = 0");
double delta; //根与系数的判别式 delta = b^2 - 4ac
delta = Math.pow(b, 2) - (4 * a * c);
if (delta > 0 || delta == 0)
{
double answer1 = (-b + Math.sqrt(delta)) / (2 * a);
double answer2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("The values are: " + answer1 + ", " + answer2);
}else
{
System.out.println("Answer contains imaginary numbers");
}
}
}
Insert value for a: 1Insert value for b: 2
Insert value for c: 1
Let 1.0x^2 + 2.0x + 1.0 = 0
The values are: -1.0, -1.0
Insert value for a: 1Insert value for b: 1
Insert value for c: -6
Let 1.0x^2 + 1.0x + -6.0 = 0
The values are: 2.0, -3.0
Insert value for a: 3Insert value for b: 2
Insert value for c: 1
Let 3.0x^2 + 2.0x + 1.0 = 0
Answer contains imaginary numbers
2.4 猜随机整数
package week2;import java.util.Scanner;
/*
* 任务 4
* 程序描述:
* 编写程序,实现产生一个从 1-N(N 由用户从键盘输入)的随机数。
* 用户猜测一 个数,判断该猜测是否正确,如果正确,则输出“你太有才啦!”,否则输出“抱歉啦”及该随机数。
*/
public class RandomNumber
{
/*
* 随机数可以用java.util.Random。
* 本程序使用的java.lang.Math;
* Math.random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
* 更多可访问:http://docs.oracle.com/javase/8/docs/api/
*/
public static void main(String[] args)
{
int random_number,num;
Scanner scan = new Scanner(System.in);
System.out.print("请输入范围为 1-N 的整数 的最大值(N):");
num = scan.nextInt();
//随机一个 1-N 的整数
random_number = (int) (Math.random()*num + 1);
//System.out.println(random_number);
System.out.print("请(猜测)输入这个随机整数:");
num = scan.nextInt();
scan.close();
if (num == random_number)
{
System.out.println("你太有才啦!");
} else
{
System.out.println("抱歉啦,该随机数为:" + random_number);
}
}
}
请输入范围为 1-N 的整数 的最大值(N):1请(猜测)输入这个随机整数:1
你太有才啦!
请输入范围为 1-N 的整数 的最大值(N):20请(猜测)输入这个随机整数:11
抱歉啦,该随机数为:5
2.5 UserApp
package week2;import week1.User;
import java.util.Scanner;
/*
* 任务5
* 程序描述:使用week1中生成的 User.java 类。
* (一)获得用户输入的姓名、年龄及性别
* (1)声明三个变量:姓名(name:字符串类型)、年龄(age:整型)及性别(gender: 整型)
* (2) 接收用户输入的 name、age、gender 的值
* (3) 分三行输出这三个变量
* (二)转换年龄
* (1) 计算并将用户已经存在于世的分钟数(分钟=年龄×525600)
* (2) 计算用户年龄对应的世纪值(年龄/100)
* (三) 输出最大心率值
* 增加 if-else 语句来计算输出男、女对应的不同的最大心率:
* 男性的最大心率为 214-(0.8* 年龄);女性的最大心率为 209-(0.7*年龄)。
*/
public class UserApp
{
public static void main(String[] args)
{
//5.1.1 声明三个变量
String name;
int age;
int gender;
User user = new User(); //实例化一个对象
Scanner scan = new Scanner(System.in);
//5.1.2 输入;初始化变量
System.out.print("Enter your name:");
name = scan.nextLine();
System.out.print("Enter your age in years:");
age = scan.nextInt();
System.out.print("Enter your gender(1 for female,0 for male):");
gender = scan.nextInt();
scan.close();
user.setName(name);
user.setAge(age);
user.setGender(gender);
//5.1.3 输出结果
System.out.println("Your name:" + user.getName());
System.out.println("Your age in years:" + user.getAge());
System.out.println("Your gender:" + gender);
//5.2 转换年龄
long minutes = age * 525600;
float centuries = (float) (age / 100.0);
//5.2.1 输出用户已经存在于世的分钟数(分钟=年龄×525600)
System.out.println("\tYour age in minutes is " + minutes + " minutes.");
//5.2.2 输出用户年龄对应的世纪值(年龄/100)
System.out.println("\tYour age in centuries is " + centuries + " centuries.");
//5.3 输出最大心率值 ;男性的最大心率为 214-(0.8* 年龄);女性的最大心率为 209-(0.7*年龄)。
// 条件运算符(三元运算符) 判断 计算心率
double heart_rate = 0==user.getGender() ? 214-(0.8*age):209-(0.7*age);
System.out.println("Your max heart rate is " + heart_rate + " beats per minutes.");
}
}
Enter your name:LucieEnter your age in years:25
Enter your gender(1 for female,0 for male):1
Your name:Lucie
Your age in years:25
Your gender:1
Your age in minutes is 13140000 minutes.
Your age in centuries is 0.25 centuries.
Your max heart rate is 191.5 beats per minutes.
Enter your name:KaoEnter your age in years:19
Enter your gender(1 for female,0 for male):0
Your name:Kao
Your age in years:19
Your gender:0
Your age in minutes is 9986400 minutes.
Your age in centuries is 0.19 centuries.
Your max heart rate is 198.8 beats per minutes.
week3
-------------------------2016-10-25更新
3.1 计算 1~15 所有不能被 2或者3 整除的和
package week3;/*
* 任务 1
* 程序描述 :计算从1-15中所有不能被 2或者3 整除的数值 和
*/
public class Sum
{
public static void main(String []args)
{
int digit;
int sum=0;
for (digit = 1; digit <= 15; ++digit)
{
//既不能被3整除,也不能被2整除
if(digit%3!=0 && digit%2!=0)
{
sum+=digit;
//System.out.println(digit);
}
}
System.out.println("sum = " + sum);
}
}
sum = 37
3.2 “你要继续玩吗(输入yes 或 not ): ”
package week3;import java.util.Scanner;
/*
* 任务 2
* 程序描述 :首先 输出提示信息“你要继续玩吗(输入yes 或 not ): ”
* 接收用户输入的一行内容, 判断其首字符是否为 yes 或 not;
* 如果用户输入的是 yes 或 not ,则退出循环输用户的选择,
* 如果用户输入的不是 yes 或 not ,则输出提示并等待用户的输入。
*/
public class YesOrNo
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String answer;
while (true)
{
System.out.print("Continue? (enter yes or not): ");
answer = scan.nextLine();
if (answer.equals("yes"))
{
System.out.println("\nThe selection was y for Yes.");
break;
}
if (answer.equals("not"))
{
System.out.println("\nThe selection was n for No.");
break;
}
}
scan.close();
}
}
Continue? (enter yes or not): helloContinue? (enter yes or not): how are you?
Continue? (enter yes or not): hi
Continue? (enter yes or not): hehe
Continue? (enter yes or not): not
The selection was n for No.
Continue? (enter yes or not): what should I input?Continue? (enter yes or not): yes
The selection was y for Yes.
3.3 猜数字
package week3;import java.util.Random;
import java.util.Scanner;
/*
* 任务 3:猜数
* 程序描述 :程序随机产生一个从 1-10 的整型随机数。用户多次输入猜测值:
* 如果小于 5次 即猜中 ,输出“你聪明绝顶啦!”(或其他个性提示)加上猜中所用次数;
* 如果猜测次数 >=5 且没有猜中,输出“呵你 outout 啦”(或其他个性提示)并附上随机数 ,退出循环;
* 如果用户输入的整数小于1或大于10,则提示“ 无效输入,请重新输入:”,等待用户 输入有效的数值。
*/
public class Guess
{
public static void main(String[] args)
{
Random rnd = new Random(); //创建一个新的随机数生成器
/*rnd.nextInt(10):生成[0,10)区间的整数*/
int randomNumber = rnd.nextInt(10)+1; //1-10
int guessCount = 0; //猜数的次数
int guessDigit; //猜数的数字
Scanner scan = new Scanner(System.in);
do
{
System.out.print("请输入1-10内的整数: ");
guessDigit = scan.nextInt();
//输入的整数小于1或大于10,等待用户 输入有效的数值。
while (guessDigit < 1 || guessDigit > 10)
{
System.out.println(guessDigit + " 为无效输入!");
System.out.print("请输入1-10内的整数: ");
guessDigit = scan.nextInt();
}
++guessCount; //此时已经有效输入
if (guessDigit == randomNumber)
{
System.out.println("恭喜你,猜对啦!你猜了"
+ guessCount
+ "次。");
break;
}
} while (guessCount < 5);
scan.close();
if (guessCount == 5)
{
System.out.println("抱歉,猜错啦!你猜了5次。"
+ "随机数为:"
+ randomNumber);
}
}
}
请输入1-10内的整数: 00 为无效输入!
请输入1-10内的整数: 11
11 为无效输入!
请输入1-10内的整数: 5
恭喜你,猜对啦!你猜了1次。
请输入1-10内的整数: 6请输入1-10内的整数: 5
请输入1-10内的整数: 4
请输入1-10内的整数: 3
请输入1-10内的整数: 1
抱歉,猜错啦!你猜了5次。随机数为:8
3.4 整数的小运算
3.4.1 NumberOperations
package week3;/*
* 任务 4
* 整数的运算
*/
public class NumberOperations
{
private int number;
//构造方法 :对成员变量 number 赋值
public NumberOperations(int numberIn)
{
number = numberIn;
}
public int getNumber()
{
return number;
}
//返回所有 (0,number) 的奇数(以tab间隔)
public String oddsUnder()
{
String oddNumbers = "\t";
for (int i = 1; i < number; i++)
{
if (i%2 != 0)
{
oddNumbers += (i + "\t");
}
}
return oddNumbers;
}
//返回 从 (1,number) 的 2的幂(平方)
public String powersTwoUnder()
{
int powerNumber = 0; //2的幂(平方)
String powerNumbers = "\t";
for (int i = 0; i < number; i++)
{
powerNumber = (int)Math.pow(2, i);
if (powerNumber >= number) break;
powerNumbers += ( powerNumber + "\t");
}
return powerNumbers;
}
//与初始值比较大小,number 大,小,等-> 1,-1,0
public int isGrater(int compareNumber)
{
if(number > compareNumber) return 1;
else if(number < compareNumber) return -1;
else return 0;
}
}
3.4.2 NumberOpsDriver
package week3;import java.util.Scanner;
/*
* 任务 4
* 测试整数的运算
*/
public class NumberOpsDriver
{
public static void main(String[] args)
{
int number; //用户输入的整数
Scanner scan = new Scanner(System.in); //准备接收键盘输入
//(1)输入三个的正整数(以空格间隔,并以0结束)
System.out.println("Enter a list of positive integers separated with a space followed by 0:");
while (true)
{
number = scan.nextInt(); //从键盘读取一个int值
if(number == 0) break;
//(2)创建 NumberOperations对象,并分别调用函数
NumberOperations numOps = new NumberOperations(number);
System.out.println("For: " + number);
System.out.println(" Odds under:" + numOps.oddsUnder());
System.out.println(" Powers of 2 under:" + numOps.powersTwoUnder());
//有选择的输出 2个数值的大小比较
if (numOps.isGrater(12) == 1)
System.out.println(" Compare " + number + " > 12 :\t1");
else if (numOps.isGrater(12) == -1)
System.out.println(" Compare " + number + " < 12 :\t-1");
else
System.out.println(" Compare " + number + " = 12 :\t0");
}
scan.close();
}
}
Enter a list of positive integers separated with a space followed by 0:12 9 17 0
For: 12
Odds under: 1 3 5 7 9 11
Powers of 2 under: 1 2 4 8
Compare 12 = 12 : 0
For: 9
Odds under: 1 3 5 7
Powers of 2 under: 1 2 4 8
Compare 9 < 12 : -1
For: 17
Odds under: 1 3 5 7 9 11 13 15
Powers of 2 under: 1 2 4 8 16
Compare 17 > 12 : 1
week4
-------------------------2016-10-31更新
4.1 求三个整数的最小值(多种方法)
package week4;import java.util.Scanner;
/*
* 任务 4.1
* 程序描述 :求3个整数最小值
*/
public class Minor
{
//0. 三个整数一定存在一个数 小于等于 另外两个数
public int minFun0(int a, int b, int c)
{
int minNum; //最小数的临时变量
if (a <= b && a <= c )minNum = a;
else if (b <= a && b <= c)minNum = b;
else minNum = c;
return minNum;
}
//1. if-else
public int minFun1(int a, int b, int c)
{
int minNum; //最小数的临时变量
if (a < b)
{
if (a < c) minNum = a;
else minNum = c;
}
else
{
if (b < c) minNum = b;
else minNum = c;
}
return minNum;
}
//2. if-else
public int minFun2(int a, int b, int c)
{
int minNum; //最小数的临时变量
if (a < b) minNum = a;
else minNum = b;
if (c < minNum) minNum = c;
return minNum;
}
//3. 条件运算符 + 临时变量
public int minFun3(int a, int b, int c)
{
int minNum; //最小数的临时变量
minNum = a<b ? a:b;
minNum = minNum<c ? minNum:c;
return minNum;
}
//4. 条件运算符 (同理,不同顺序即可)
public int minFun4(int a, int b, int c)
{
return (a<b ? a:b)<c ? (a<b ? a:b):c;
}
//5. 条件运算符 (同理,不同顺序即可)
public int minFun5(int a, int b, int c)
{
return a<b ? (a<c?a: c) : (b<c?b: c);
}
//6. 3个整数由小至大排序
public int minFun6(int a, int b, int c)
{
//如果为真,则(异或运算)交换位置
if(a > b){ a ^= b; b ^= a; a ^= b; }
if(a > c){ a ^= c; c ^= a; a ^= c; }
if(b > c){ b ^= c; c ^= b; b ^= c; }
return a;
}
//7. 两点坐标参数比较 + 条件运算符
public int minFun7(int a, int b, int c)
{
return ((a+b) - Math.abs(a-b))/2 < c
? (a+b - Math.abs(a-b))/2 :c;
}
//8. 三点坐标参数比较
public int minFun8(int a, int b, int c)
{
return ((a+b - Math.abs(a-b))/2 + c
- Math.abs(c-(a+b - Math.abs(a-b))/2))/2;
}
public static void main(String[] args)
{
int resNumber[] = new int[9]; //存放结果
int num1, num2, num3;
Scanner scan = new Scanner(System.in);
System.out.println("Please input three integers:");
num1 = scan.nextInt();
num2 = scan.nextInt();
num3 = scan.nextInt();
scan.close();
Minor minFuns = new Minor();
resNumber[0] = minFuns.minFun0(num1, num2, num3);
resNumber[1] = minFuns.minFun1(num1, num2, num3);
resNumber[2] = minFuns.minFun2(num1, num2, num3);
resNumber[3] = minFuns.minFun3(num1, num2, num3);
resNumber[4] = minFuns.minFun4(num1, num2, num3);
resNumber[5] = minFuns.minFun5(num1, num2, num3);
resNumber[6] = minFuns.minFun6(num1, num2, num3);
resNumber[7] = minFuns.minFun7(num1, num2, num3);
resNumber[8] = minFuns.minFun8(num1, num2, num3);
// 循环遍历输出结果
for (int i = 0; i < resNumber.length; i++)
{
System.out.println("minFun" + (i+1) + ": " + resNumber[i]);
}
}
}
Please input three integers:8 1 7
minFun1: 1
minFun2: 1
minFun3: 1
minFun4: 1
minFun5: 1
minFun6: 1
minFun7: 1
minFun8: 1
minFun9: 1
4.2 回文(字符串)测试
package week4;import java.util.Scanner;
/*
* 任务 4.2
* 程序描述 :进行回文测试,如字符串“abdba”为回文palindrome
* (1)提示用户输入一个字符串
* (2)如果字符串为回文,则输出“这是回文”,否则输出“不是回文哦”
* (3)输出提示“要测试另一个字符串吗? 如果用户输入了y或Y,则执行(2),否则退出程序
*/
public class PalindromeTester
{
public static void main(String[] args)
{
String string = null;
char index; //输入的第一个字符
Scanner scan = new Scanner(System.in);
System.out.print("请输入一个字符串:");
string = scan.nextLine();
do
{
if (palindrome(string))
System.out.println(string + " 是回文!");
else
System.out.println(string + " 不是回文哦。");
System.out.println("\n要测试另一个字符串吗?");
System.out.print("继续测试输入 y/Y,否则输入其他:");
index = scan.nextLine().charAt(0);
switch (index)
{
case 'y':
case 'Y':
System.out.print("请输入一个字符串:");
string = scan.nextLine();
break;
case 'n':
case 'N':
default:
System.out.print("程序结束!");
break;
}
} while (index == 'y'|| index=='Y');
scan.close();
}
private static boolean palindrome(String string)
{
boolean flag = true; //默认返回真
int len = string.length(); //字符串的长度
for (int i = 0; i < len/2; i++)
{
if (string.charAt(i) != string.charAt(len-1-i))
{
flag = false;
break;
}
}
return flag;
}
}
请输入一个字符串:testtest 不是回文哦。
要测试另一个字符串吗?
继续测试输入 y/Y,否则输入其他:y
请输入一个字符串:aba
aba 是回文!
要测试另一个字符串吗?
继续测试输入 y/Y,否则输入其他:n
程序结束!
4.3 判断小数点的两边有多少位
package week4;import java.math.BigDecimal;
import java.util.Scanner;
/*
** 任务 4.3
** 程序描述 :
* (1)接收用户输入的一个double类型的数值
* (2)判断该数值小数点左侧及右侧各有多少位
*
** 解题思路与方法局限:
* 本程序 用户的输入是以Double类型为接收的,故也是基于double类型处理的;
* a)digitalBitsFun1
* 原理:Double.toString(doubleInput)将小数转化为字符串进行处理,查找'.'的位置进行判断。
* 局限:问题就是小数转字符串时候会出现科学计数法,这样结果就错误,如“1.32456783E7 小数点左边有1位,右边有10位。”。
* 改进:使用nextLine()接收用户输入,直接传字符串参数。
* b)digitalBitsFun2
* 原理:将一个浮点数进行数值运算,分离开整数部分和小数部分;整数部分通过"乘10取余"计算位数,小数部分通过"乘10舍整"计算位数。
* 局限:计算机对于浮点数的存储(二进制)位数是有限制的,当精度过高时候会产生溢出导致结果不准确(错误)。
* 改进:精度问题,统一使用高精度的存储方式。
*
** 给出一个测试结果,可以对比发现方法的局限性:
* 请输入一个小数:123465789.123456789123
* digitalBitsFun1:
* 1.2346578912345679E8 小数点左边有1位,右边有18位。
* digitalBitsFun2:
* 1.2346578912345679E8 小数点左边有9位,右边有8位。
*
** 程序说明:
* 本程序对于整数部分或小数部分长度为7以内的输入结果是正确的。至于局限性了解即可。
* digitalBitsFun2中很可能出现精度问题导致结果的异常,而精度也决定了误差;
* 经过很多次的调试发现还是要统一BigDecimal类型,比如BigDecimal构造函数参数为字符串(double+"");
* 在进行BigDecimal运算过程中 如果出现低精度的浮点数,就会影响结果,如new BigDecimal(doubleInput*10+"");
*
*/
public class DigitalTest
{
public static void main(String[] args)
{
double doubleInput;
Scanner scan = new Scanner(System.in);
System.out.print("请输入一个小数: ");
doubleInput = scan.nextDouble();
scan.close();
System.out.println("digitalBitsFun1:");
digitalBitsFun1(doubleInput);
System.out.println("digitalBitsFun2:");
digitalBitsFun2(doubleInput);
}
private static void digitalBitsFun1(double doubleInput)
{
String doubleStr = Double.toString(doubleInput);
int pointIndex = doubleStr.indexOf('.');
System.out.println(doubleStr + " 小数点左边有"
+ pointIndex + "位,右边有"
+ (doubleStr.length() - pointIndex - 1 )
+ "位。");
}
private static void digitalBitsFun2(double doubleInput)
{
double integer = Math.floor(doubleInput); //取整数部分
BigDecimal decimals ; //小数部分
int integerCount = 0; //整数长度
int decimalCount = 0; //小数长度
//取小数部分
BigDecimal doubleIn = new BigDecimal(doubleInput+"");
BigDecimal integerIn = new BigDecimal(integer + "");
decimals = doubleIn.subtract(integerIn);
//System.out.println("小数部分:" + decimals);
//计算整数长度
int i = 1; //临时步长
if (integer == 0) integerCount++;
else
{
while (integer != integer% i)
{
integerCount++;
i *= 10;
}
}
//计算小数长度
BigDecimal j = new BigDecimal(10); //临时步长
while (decimals.doubleValue() > 0)
{
decimalCount++;
BigDecimal multiply10 = decimals.multiply(j);
BigDecimal integerDeci = new BigDecimal(Math.floor(multiply10.doubleValue()));
decimals = multiply10.subtract(integerDeci);
//测试/调试输出
/*System.out.println("1---" + multiply10);
System.out.println("2---" + integerDeci);
System.out.println("1-2 = " + decimals);*/
}
System.out.println(doubleInput
+ " 小数点左边有" + integerCount
+ "位,右边有" + decimalCount + "位。");
}
}
请输入一个小数: 1234567.1234567digitalBitsFun1:
1234567.1234567 小数点左边有7位,右边有7位。
digitalBitsFun2:
1234567.1234567 小数点左边有7位,右边有7位。
4.4 Dog项目
package week4;/*
* 任务 4.4.1
* GoodDog类
*/
public class GoodDog
{
private int size;
GoodDog(int sizeIn)
{
size = sizeIn;
}
void bark()
{
if (size <= 14) System.out.println("Yip!Yip!");
else if(size > 14 & size < 60) System.out.println("Ruff!Ruff!");
else System.out.println("Wooof!Wooof!");
}
public int getSize()
{
return size;
}
public void setSize(int size)
{
this.size = size;
}
}
package week4;/*
* 任务 4.4.2
* 测试狗叫
*/
public class GoodDogTestDrive
{
public static void main(String[] args)
{
GoodDog dog1 = new GoodDog(0);
GoodDog dog2 = new GoodDog(0);
GoodDog dog3 = new GoodDog(0);
dog1.setSize(10);
dog1.bark();
dog2.setSize(50);
dog2.bark();
dog3.setSize(70);
dog3.bark();
}
}
Yip!Yip!Ruff!Ruff!
Wooof!Wooof!
4.5 模拟掷骰子
package week4;/*
* 任务 4.5.1
* Die类,模拟掷骰子。
*
*/
public class Die
{
private int faceValue;
public Die()
{
faceValue = 1;
}
public int roll()
{
return faceValue = (int)(Math.random()*6 + 1);
}
public String toString()
{
return Integer.toString(faceValue);
}
public int getFaceValue()
{
return faceValue;
}
public void setFaceValue(int faceValue)
{
this.faceValue = faceValue;
}
}
package week4;/*
* 任务 4.5.2
* RollingDice类,模拟掷骰子。
*
*/
public class RollingDice
{
public static void main(String[] args)
{
int sum; //
Die die1; //Die类引用变量die1
Die die2; //Die类引用变量die2
//创建两个Die类的对象并赋值给die1,die2
die1 = new Die();
die2 = new Die();
//调用两个对象的roll方法来模拟掷骰子
die1.roll();
die2.roll();
//输出两个骰子的点数
System.out.println("die1:" + die1.toString());
System.out.println("die2:" + die2.toString());
System.out.println();
int i = die1.roll(); //调用die1的roll()并将返回值赋给int类型的变量i
die2.setFaceValue(4); //以4为实参调用die2的setFaceValue()
//输出两个骰子的点数
System.out.println("die1:" + i);
System.out.println("die2:" + die2.toString());
//调用die1、die2的getFaceValue()获得两个骰子的点数并求和,输出和
sum = die1.getFaceValue() + die2.getFaceValue();
System.out.println("sum= " + sum);
System.out.println();
//调用die1、die2的roll()并将和赋值给sum
sum = die1.roll() + die2.roll();
//输出两个骰子的点数以及点数和
System.out.println("die1:" + die1.toString());
System.out.println("die2:" + die2.toString());
System.out.println("sum= " + sum);
}
}
die1:3die2:1
die1:1
die2:4
sum= 5
die1:6
die2:4
sum= 10
week5
-------------------------2016-11-07更新
5.1 UserInfo 、UserInfoDrive
5.1.1 UserInfo
package week5;public class UserInfo
{
private String firstName;
private String lastName;
private String location;
private int age;
private int status;
private static final int OFFLINE = 0; //用户离线
private static final int ONLINE = 1; //用户在线
public UserInfo(String firstNameIn, String lastNameIn)
{
firstName = firstNameIn;
lastName = lastNameIn;
setLocation("Not specified");
setAge(0);
status = OFFLINE;
}
public String toString()
{
String output = "";
String statusStr = null; //状态字符串
if (status == 0) statusStr = "Offline";
if (status == 1) statusStr = "Online";
output = "Name: " + lastName
+ " " + firstName
+ "\nLocation: " + location
+ "\nAge: " + age
+ "\nStatus: " + statusStr ;
return output;
}
public String getLocation()
{
return location;
}
public void setLocation(String locationIn)
{
this.location = locationIn;
}
public int getAge()
{
return age;
}
public boolean setAge(int ageIn)
{
age = ageIn;
boolean flag;
if (age > 0) flag = true;
else flag = false;
return flag;
}
public void logOff()
{
status = OFFLINE;
}
public void logOn()
{
status = ONLINE;
}
public static void main(String[] args)
{
UserInfo userInfo = new UserInfo("Jane", "Lane");
System.out.println(userInfo.toString());
System.out.println("-----------------------");
userInfo.setAge(23);
userInfo.setLocation("Auburn");
userInfo.logOn();
System.out.println(userInfo.toString());
}
}
Name: Lane JaneLocation: Not specified
Age: 0
Status: Offline
-----------------------
Name: Lane Jane
Location: Auburn
Age: 23
Status: Online
5.1.2 UserInfoDrive
package week5;public class UserInfoDrive
{
public static void main(String[] args)
{
UserInfo user1 = new UserInfo("Linda", "Jiang");
System.out.println(user1.toString());
System.out.println("-----------------------");
user1.setLocation("Virginia");
user1.setAge(20);
user1.logOn();
System.out.println(user1.toString());
System.out.println("-----------------------");
UserInfo user2 = new UserInfo("yi", "Jiang");
System.out.println(user2.toString());
System.out.println("-----------------------");
user2.setLocation("Qingdao City");
user2.setAge(22);
user2.logOn();
System.out.println(user2.toString());
}
}
Name: Jiang LindaLocation: Not specified
Age: 0
Status: Offline
-----------------------
Name: Jiang Linda
Location: Virginia
Age: 20
Status: Online
-----------------------
Name: Jiang yi
Location: Not specified
Age: 0
Status: Offline
-----------------------
Name: Jiang yi
Location: Qingdao City
Age: 22
Status: Online
5.2 模拟账户存取
5.2.1 Account
package week5;public class Account
{
private String acctNumber; //银行帐号
private String name; //姓名
private double balance; //余额
private static final double RATE = 0.035; //利息
public Account(String acctNumber, String name, double balance)
{
this.acctNumber = acctNumber;
this.name = name;
this.balance = balance;
}
//存款
public double deposit(double amount)
{
return balance += amount;
}
//取款
public double withdraw(double amount)
{
return balance -= amount;
}
//加息
public double addInterest()
{
return balance *= (1 + RATE);
}
public String toString()
{
//打印输入余额(四舍五入)保留2位小数
double balanceT = (double)Math.round(balance*100)/100;
String output =
"AcctNumber: " + acctNumber
+ "\n Name: " + name
+ "\n Balance: " + balanceT + "\n";
return output;
}
}
5.2.2 AccountDrive
package week5;public class AccountDrive
{
public static void main(String[] args)
{
Account acct1 = new Account("60000001", "Alice", 222);
Account acct2 = new Account("60000002", "Eric", 2222);
Account acct3 = new Account("60000003", "Lia", 22222);
acct1.deposit(300.00); //acct1存款300
acct2.deposit(500.00); //acct2存款500
acct2.withdraw(400.00); //acct2取款400
System.out.print(acct1.toString());
System.out.print(acct2.toString());
System.out.println(acct3.toString());
//分别对三个账号加息
acct1.addInterest();
acct2.addInterest();
acct3.addInterest();
System.out.print(acct1.toString());
System.out.print(acct2.toString());
System.out.print(acct3.toString());
}
}
AcctNumber: 60000001 Name: Alice
Balance: 522.0
AcctNumber: 60000002
Name: Eric
Balance: 2322.0
AcctNumber: 60000003
Name: Lia
Balance: 22222.0
AcctNumber: 60000001
Name: Alice
Balance: 540.27
AcctNumber: 60000002
Name: Eric
Balance: 2403.27
AcctNumber: 60000003
Name: Lia
Balance: 22999.77
期中测试
Test 1. 求15以内的正奇数之和
-------------------------2016-11-11更新
/* * 1. 求15以内的正奇数之和;即求1+3+5+7+9+11+13+15的和。
*/
public class OddNumberSum
{
public static void main(String[] args)
{
int sum = 0;
for (int i = 0; i <= 15; i++)
{
if (i % 2 == 1) sum += i;
}
System.out.println("15以内的正奇数之和为" + sum);
}
}
15以内的正奇数之和为64
Test 2. 新版猜数字
import java.util.Scanner;/*
* 6. 猜数字新版。
* 规定:生成一个100以内的整数,
* 只给提示猜大了或猜小了,直到猜对为止;
* 并统计次数
*/
public class GussNumberNew
{
public static void main(String[] args)
{
//生成一个 1-100 的随机数
int randomDigit = (int) (Math.random()*100 + 1);
int gussNumber; //猜的数字
int count = 0; //猜的次数
Scanner scan = new Scanner(System.in);
//System.out.println(randomDigit);
do
{
count++;
System.out.print("请输入一个100以内的整数:");
gussNumber = scan.nextInt();
if (gussNumber < randomDigit)
System.out.println("抱歉,猜小了。");
if (gussNumber > randomDigit)
System.out.println("抱歉,猜大了。");
} while (gussNumber != randomDigit);
System.out.println("您猜了" + count + "次。");
System.out.println("恭喜您,猜对啦!");
scan.close();
}
}
请输入一个100以内的整数:50抱歉,猜大了。
请输入一个100以内的整数:25
抱歉,猜大了。
请输入一个100以内的整数:12
抱歉,猜大了。
请输入一个100以内的整数:6
抱歉,猜小了。
请输入一个100以内的整数:9
抱歉,猜小了。
请输入一个100以内的整数:10
抱歉,猜小了。
请输入一个100以内的整数:11
您猜了7次。
恭喜您,猜对啦!
Test 3 读取urls.inp文件,并以“/”为分隔符将前后的内容按行输出
www.google.comwww.linux.org/info/gnu.html
thelyric.com/canlender/
www.cs.vt.edu/undergraduate/about
youtube.com/watch?v=EHCRimwRGLs
import java.io.File;import java.io.FileNotFoundException;
import java.util.Scanner;
/*
* 3. 读取urls.inp文件,并以“/”为分隔符将前后的内容按行输出。
*/
public class TextFileInputTest
{
public static void main(String[] args)
{
//文件放在项目路径下(相对路径)
String fileName = "urls.inp";
Scanner inputStream = null;
Scanner scan = null;
try
{
inputStream = new Scanner(new File( fileName));
} catch (FileNotFoundException e)
{
System.out.println("Error opening the file " + fileName);
System.exit(0);
}
while (inputStream.hasNextLine())
{
String line = inputStream.nextLine();
System.out.println("URL: " + line);
scan = new Scanner(line);
scan.useDelimiter("/");
while (scan.hasNext())
System.out.println(" "+scan.next());
System.out.println();
}
scan.close();
inputStream.close();
}
}
URL: www.google.com www.google.com
URL: www.linux.org/info/gnu.html
www.linux.org
info
gnu.html
URL: thelyric.com/canlender/
thelyric.com
canlender
URL: www.cs.vt.edu/undergraduate/about
www.cs.vt.edu
undergraduate
about
URL: youtube.com/watch?v=EHCRimwRGLs
youtube.com
watch?v=EHCRimwRGLs
Test 4 将用户输入的一行字符串分解到单词
import java.util.ArrayList;import java.util.Scanner;
/*
* 4.将用户输入的一行字符串分解到单词,加入ArrayList<String>类型
* 的变量 inputList中,输出inputList的各元素分正序和逆序输出。
*/
public class InputStringTest
{
public static void main(String[] args)
{
ArrayList<String> inputList = new ArrayList<>();
Scanner scan = new Scanner(System.in);
System.out.print("请输入一行单词以空格分隔:");
String line = scan.nextLine();
//I like you
//字符串分割
String arrayStr[] = line.split(" ");
for (String string : arrayStr)
{
inputList.add(string);
}
//正序输出
for (String word : inputList)
{
System.out.print(word + " ");
}
System.out.println();
//逆序输出
for (int i = inputList.size()-1; i >= 0 ; i--)
{
System.out.print(inputList.get(i) + " ");
}
scan.close();
}
}
请输入一行单词以空格分隔:I like youI like you
you like I
Test 5 生成Temperatures.java和TemperatureInfo.java两个类
import java.util.ArrayList;
/* 5.1 Temperatures类:
* 定义ArrayList<Integer>类型的动态数组temperature,用以存储用户输入的温度数据。
* getLowestTemp()和getHighestTemp()方法分别 返回输入的最大温度值和最小温度值;
* toString()方法输出所有输入的温度 及 最大值、最小值。
* 然后加入两个方法:lowerMinimun(int lowIn)和higherMaximum(int highIn)
* 用来比较与之前输入的多个温度的最小值和最大值,从而输出两者之间的较小值和较大值。
*/
public class Temperatures
{
ArrayList<Integer> temperature;// 存储用户输入的温度数据
Temperatures(ArrayList<Integer> temperaturesIn)
{
if (temperaturesIn == null) //空对象则new
{
temperaturesIn = new ArrayList<Integer>();
}
temperature = temperaturesIn;
//temperature.add(0); //默认添加一个元素
}
// 输入一个温度,返回此时的最小值
public int lowerMinimun(int lowIn)
{
temperature.add(lowIn);
return (getLowestTemp());
}
// 输入一个温度,返回此时的最大值
public int higherMaximum(int highIn)
{
temperature.add(highIn);
return getHighestTemp();
}
// 返回此最小温度值
public int getLowestTemp()
{
int min = temperature.get(0);//至少有一个元素,否则报错
for (int i = 1; i < temperature.size(); i++)
{
if (temperature.get(i) < min)
min = temperature.get(i);
}
return min;
}
// 返回此最大温度值
public int getHighestTemp()
{
int max = temperature.get(0);//至少有一个元素,否则报错
for (int i = 1; i < temperature.size(); i++)
{
if (max < temperature.get(i))
max = temperature.get(i);
}
return max;
}
//输出所有输入的温度 及 最大值、最小值。
@Override
public String toString()
{
String output;
output = "\tTemperatures:"
+ temperature.toString()
+ "\n\tLow is :" + getLowestTemp()
+ "\n\tHigh is:" + getHighestTemp();
return output;
}
public static void main(String[] args)
{
ArrayList<Integer> tList = new ArrayList<Integer>();
tList.add(3);
tList.add(2);
tList.add(5);
tList.add(6);
Temperatures temps = new Temperatures(tList);
System.out.println(temps.toString());
temps.lowerMinimun(1);
temps.higherMaximum(66);
System.out.println(temps.toString());
}
}
Temperatures:[3, 2, 5, 6] Low is :2
High is:6
Temperatures:[3, 2, 5, 6, 1, 66]
Low is :1
High is:66
import java.util.ArrayList;import java.util.Scanner;
/*
* 5.2 TemperatureInfo类:
* 接收用户输入的多个温度值(以” ”为结束标识)。
* 创建Temperatures 类型的temps对象引用变量,
* 根据用户输入的字符来决定调用相应的方法。
*/
public class TemperaturesInfo
{
public static void main(String[] args)
{
//Temperatures temps = new Temperatures(null);
ArrayList<Integer> tList = new ArrayList<Integer>();
Scanner scan = new Scanner(System.in);
do
{
System.out.print("Please input the temperates:");
String temp = scan.nextLine();
//输入的第一个字符为空格则结束接收
if (temp.toCharArray()[0] == ' ') break;
tList.add( Integer.parseInt(temp) );
} while (true);
Temperatures temps = new Temperatures(tList);
//[L]ow temp, [H]eigh temp, [P]rint, [E]nd: "
String menu = "Enter choice - [L]ow temp, [H]eigh temp, [P]rint, [E]nd: ";
while (true)
{
char choice;
System.out.println(menu);
choice = scan.nextLine().charAt(0);
if (choice != 'L' && choice != 'l' && choice != 'H' && choice != 'h'
&& choice != 'p' && choice != 'P' && choice != 'e' && choice != 'E' )
{
System.out.println
("Your selection is incorrect, please re-enter!\n");
continue;
}
switch (choice)
{
case 'L':
case 'l':
System.out.println("\tLow is :" + temps.getLowestTemp());
System.out.println();
break;
case 'H':
case 'h':
System.out.println("\tHigh is:" + temps.getHighestTemp());
System.out.println();
break;
case 'P':
case 'p':
System.out.println(temps.toString());
System.out.println();
break;
case 'E':
case 'e':
scan.close(); //关闭输入
System.out.println("Exiting the program...");
System.exit(0); //终止当前正在运行的 Java 虚拟机。
}
}
}
}
Please input the temperates:12Please input the temperates:-20
Please input the temperates:100
Please input the temperates:56
Please input the temperates:-35
Please input the temperates:
Enter choice - [L]ow temp, [H]eigh temp, [P]rint, [E]nd:
l
Low is :-35
Enter choice - [L]ow temp, [H]eigh temp, [P]rint, [E]nd:
h
High is:100
Enter choice - [L]ow temp, [H]eigh temp, [P]rint, [E]nd:
p
Temperatures:[12, -20, 100, 56, -35]
Low is :-35
High is:100
Enter choice - [L]ow temp, [H]eigh temp, [P]rint, [E]nd:
e
Exiting the program...
week6
6 Cylinder(一)
-------------------------2016-11-12更新
package week6;import java.text.DecimalFormat;
/*
* 6.1 创建 Cylinder类,以存储标签、半度;
* 方法包括获得及设置这些成员变量,计算直径、周长面积及体积。
*/
public class Cylinder
{
private String lable; //存储标签
private double radius; //圆柱半径
private double height; //圆柱的高
Cylinder(String lable, double radius, double height)
{
this.lable = lable;
this.radius = radius;
this.height = height;
}
public String getLable()
{
return lable;
}
public boolean setLable(String lable)
{
boolean flag = true;
if (lable.isEmpty()) flag = false;
else this.lable = lable.trim();
//String.trim()截去字符串开头和末尾的空白
return flag;
}
public double getRadius()
{
return radius;
}
public void setRadius(double radius)
{
this.radius = radius;
}
public double getHeight()
{
return height;
}
public void setHeight(double height)
{
this.height = height;
}
//返回圆柱底面直径
public double diameter()
{
return radius * 2;
}
//返回圆柱底面周长
public double circumference()
{
return diameter() * Math.PI;
}
//返回 表面积 = 圆柱底面积×2 + 底面周长×高
public double area()
{
return Math.PI * radius * radius * 2
+ circumference() * height;
}
//返回 圆柱底体积
public double volumn()
{
return Math.PI * radius * radius * height;
}
@Override
public String toString()
{
String output = null;
DecimalFormat df = new DecimalFormat("#,##0.0##");
output = lable
+ " is a cylinder with radius = " + df.format(radius)
+ " units and height = " + df.format(height)
+ " units, "
+ "\nwhich has diameter = " + df.format(diameter())
+ " units, circumference = " + df.format(circumference())
+ " units, "
+ "\narea = " + df.format(area())
+ " square units, and volume = " + df.format(volumn())
+ " cubic units.\n";
return output;
}
public static void main(String[] args)
{
Cylinder c1 = new Cylinder("Small Example", 4.0, 10.0);
Cylinder c2 = new Cylinder("Medium Example", 22.1, 30.6);
Cylinder c3 = new Cylinder("Large Example", 100.0, 200.0);
c1.setLable("");
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
}
}
Small Example is a cylinder with radius = 4.0 units and height = 10.0 units, which has diameter = 8.0 units, circumference = 25.133 units,
area = 351.858 square units, and volume = 502.655 cubic units.
Medium Example is a cylinder with radius = 22.1 units and height = 30.6 units,
which has diameter = 44.2 units, circumference = 138.858 units,
area = 7,317.837 square units, and volume = 46,952.189 cubic units.
Large Example is a cylinder with radius = 100.0 units and height = 200.0 units,
which has diameter = 200.0 units, circumference = 628.319 units,
area = 188,495.559 square units, and volume = 6,283,185.307 cubic units.
package week6;import java.util.Scanner;
/*
* 6.2 CylinderApp 测试类
* 输入 标签、半径及高度,并初始化对象
*/
public class CyliderApp
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String lable;
double radius;
double height;
System.out.println("Enter label, radius and height for a cylinder.");
System.out.print("\tlable: ");
lable = scan.nextLine();
System.out.print("\tradius: ");
radius = Double.parseDouble(scan.nextLine());
System.out.print("\theight: ");
height = Double.parseDouble(scan.nextLine());
scan.close();
Cylinder cylinder = new Cylinder(lable, radius, height);
System.out.println(cylinder);
}
}
Enter label, radius and height for a cylinder. lable: Small Example
radius: 4.0
height: 10.0
Small Example is a cylinder with radius = 4.0 units and height = 10.0 units,
which has diameter = 8.0 units, circumference = 25.133 units,
area = 351.858 square units, and volume = 502.655 cubic units.
以上是 java-7311练习(上) 的全部内容, 来源链接: utcz.com/z/390800.html