一.设计一个银行账户类,其中包括以下内容,并用字符界面模拟存款和取款过程。
1、账户信息 账户、姓名、开户时间、身份证号码等
2、存款方法
3、取款方法
4、其他方法,如“查询余额”和“显示账号”等
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Bank {
private String acount;
private String name;
private String id;
private String time;
private double num;
public Bank() {}
public Bank(String acount,String name,String id,String time,double num) {
this.acount=acount;
this.name=name;
this.id=id;
this.time=time;
this.num=num;
}
public String getAcount(){
return acount;
}
public void setAcount(String acount){
this.acount=acount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id=id;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time=time;
}
public double getNum() {
return num;
}
public void setNum(double num) {
this.num=num;
}
public String toString() {
return "Bank[账号是:"+acount+",姓名为:"+name+",身份证号是:"+id+",开户时间:"+time+",金额为:"+num;
}
public void cunkuan(double num) {
this.num=this.num+num;
}
public void qukuan(double num) {
if(num>this.num) {
System.out.println("余额不足,不能取款");
}else {
this.num=this.num-num;
}
}
public double GetAcountNum() {
return this.num;
}
}
测试类:
import
java.util.Scanner;
public class Test {
public static void main(String[] args) {
Bank bank = new Bank();
bank.setAcount("ycinfo");
bank.setId("3434343434343434343");
bank.setName("小红");
bank.setNum(1000);
bank.setTime("2018年9月2号");
bank.toString();
System.out.println("************建行欢迎您!!!***********");
for(int x=0;x<3;x++) {
Scanner
sc = new Scanner(System.in);
System.out.println("请输入你的账户是:");
String acount = sc.nextLine();
System.out.println("请输入你的密码:");
String pwd = sc.nextLine();
if (pwd.equals("123456") && acount.equals(bank.getAcount())) {
System.out.println("登录成功!");
nextOption(bank);
}else if(2-x==0){
System.out.println("账号被锁定");
}else {
System.out.println("密码或账户不正确,你还有"+(2-x)+"次机会");
}
}
}
public static void nextOption(Bank bank) {
while (true) {
System.out.println("请输入一下操作:");
System.out.println("1.存款");
System.out.println("2.取款");
System.out.println("3.显示账号");
System.out.println("4.获取账号的金额");
System.out.println("5.退出当前账户");
Scanner sc2 = new Scanner(System.in);
String option = sc2.nextLine();
switch (option) {
case "1":
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要存的钱:");
double num = sc.nextDouble();
bank.cunkuan(num);
System.out.println("当前金额为" + bank.getNum());
break;
case "2":
System.out.println("请输入你要取的钱:");
double num1 = sc2.nextDouble();
bank.qukuan(num1);
if (num1 > bank.getNum()) {
System.out.println("余额不足,不能取款!您当前可用余额为:" + bank.getNum());
} else {
System.out.println("当前金额为:" + (bank.getNum()));
}
break;
case "3":
System.out.println("账号为:");
System.out.println(bank.getAcount());
break;
case "4":
System.out.println("当前账户金额为:" + bank.getNum());
break;
case "5":
System.out.println("退出系统");
System.exit(0);
break;
default:
System.out.println("对不起,您的输入如有误");
break;
}
}
}
}
二.怎样用递归算法写一个将二进制转换为十进制的程序?
非递归:
import
java.util.Scanner;
public class JinZhi {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要转换的二进制:");
String two = sc.nextLine();
int result=twototen(two);
System.out.println("转化后的十进制为:"+result);
}
public static int twototen(String two) {
int x=0;
for(char c:two.toCharArray()) {
x=x*2+(c=='1'?1:0);
}
return x;
}
}
递归:
import java.util.Scanner;
public class DiGui {
public static void main(String[] args) {
Scanner
sc=new Scanner(System.in);
System.out.println("输入二进制数:");
int n=sc.nextInt();
System.out.println(toten(n));
}
public static int toten(int n) {
if(n==1||n==0) {
return n;
}
return toten(n/10)*2+n%10;
}
}
非递归十进制转二进制:
import
java.util.Scanner;
public class JinZhi {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入十进制数");
int s=sc.nextInt();
String Str ="";
while(s !=0){
Str+ =(s % 2) ;
s =s/2;
}
System.out.println("输出二进制数为:"+Str);
}
}
递归十进制转二进制:
import
java.util.Scanner;
public class JinZhi1 {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("请输入十进制数:");
int n=sc.nextInt();
System.out.println("输出二进制数:");
toBinary(n);
}
public static void toBinary(int n){
if(n/2==0) {
System.out.println(n%2);
} else {
toBinary(n/2);
System.out.println(n%2);
}
}
}
三.迭代求方程组的解
例子:使用牛顿迭代法求方程的解,X3-2x-5=0,在区间[2,3]上的根。
用牛顿迭代法三次求方程f(x)=x5-x2+x-30=0,在区间[1,3]中的近似值
public class Test {
public static void main(String[] args) {
double x=2;
for(int i=0;i<20;i++) {
x=-f(x)/f1(x)+x;
}
System.out.println(x+"");
}
static double f(double
x) {
double ans;
ans=Math.pow(x, 3)-2*x-5;
return ans;
}
static double f1(double
x) {
double ans;
ans=3*Math.pow(x,2)-2;
return ans;
}
}
四.编写函数,完成n*n矩阵的转置操作,矩阵各元素随机生成。
import
java.util.Scanner;
public class ZhuanZhi {
public static void main(String[] args) {
System.out.print("请输入所需要的n矩阵的阶数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int row_number = n;
int column_number = n;
System.out.println("随机生成的矩阵A为:");
int a[][]=create_Matrix(row_number, column_number);
System.out.println("转置后的矩阵:");
Matrix(a);
}
public static int[][] create_Matrix(int row_number, int column_number) {
int matrixA[][] = new int[row_number][column_number];
for (int i = 0; i <= row_number - 1; i++) {
for (int j = 0; j <= column_number - 1; j++) {
matrixA[i][j] = random_number();
System.out.print(matrixA[i][j] + " ");
}
System.out.println();
}
return matrixA;
}
public static int random_number() {
int number;
number = new java.util.Random().nextInt(100) +
1;
return number;
}
public static int[][] Matrix(int [][] a){
int row_number=a.length;
int column_number=a[0].length;
int [][] b=new int [row_number][column_number];
for (int i = 0; i < row_number ; i++) {
for (int j = 0; j < column_number ; j++) {
b[i][j]=a[j][i];
System.out.print(b[i][j]+" ");
}
System.out.println();
}
return b;
}
}
五:编写程序:计算π的近似值,π的计算公式为:
π=2×(2×2/1×3)×(4×4/3×5)×(6×6/5×7)×……[2n×2n/(2n-1)×(2n+1)]注:分别输出当 n 为10、100、1000时的计算结果,n值由键盘输入。
import
java.util.Scanner;
public class PI {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入n:");
int n=sc.nextInt();
double pi=count(n);
System.out.println("pi="+pi);
}
public static double count(int n) {
double sum=2.0;
int i = 1;
while( i<=n) {
sum*=(2.0*i*2.0*i)/((2.0*i-1.0)*(2.0*i+1.0));
i++;
}
return sum;
}
}
请文明使用资源,如果发现有代码错误或者不懂欢迎留言评论。