java-7311练习(上)

java

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");

}

}

JAVAJAVAJAVA

JAVAJAVAJAVA

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: 1

Insert 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: 1

Insert 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: 3

Insert 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:Lucie

Enter 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:Kao

Enter 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): hello

Continue? (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内的整数: 0

0 为无效输入!

请输入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;

}

}

请输入一个字符串:test

test 不是回文哦。

要测试另一个字符串吗?

继续测试输入 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.1234567

digitalBitsFun1:

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:3

die2: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 Jane

Location: 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 Linda

Location: 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.com

www.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 you

I 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:12

Please 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

回到顶部