java编程应用题

给力的话还会加悬赏!!!!!
当客户购买了一辆汽车,他们希望获得贷款,他们通常支付一些钱在售(首付)的时间,然后获得贷款的车(在资助金额)的费用的其余部分。
要求用户输入:
他们的姓名(作为一个字符串)
汽车的成本
首付
车子贷款的的年数
每年的利率(例如,如果他们输入2.5,这将是2.5%)

使用这个公式计算出客户的每月付款:
每月付款 =
( 月利率 * 贷款金额 ) / ( 1 - (1 / ( 1 +月利率 )^贷款月数))

你的程序的输出应为:
每月支付格式化为钱 ;
您生成用户的姓氏的第一个字母与1000和10000之间的随机数组合的帐号可以肯定的账号由一个字母后紧跟5位数字。因此,如果随机数为1000,帐户号码将具有前导0。(比如W01000)
就用最简单的方法就好,不用太复杂

package com.sg;

import java.util.Random;
import java.util.Scanner;

public class T {
/**
 * 
 * @param uname 用户名
 * @param mDouble 汽车成本
 * @param sDouble 首付
 * @param cyear 贷款年数
 * @param lDouble 年利率(月利率=年利率/12)
 * @return 返回 每月应该支付的钱
 */
public T(){
System.out.println("请输入姓名:");
        Scanner scanner = new Scanner(System.in);
        String uname = scanner.nextLine();
        System.out.println("请输入汽车成本:");
        Double mDouble = scanner.nextDouble();
        System.out.println("请输入首付:");
        Double sDouble = scanner.nextDouble();
        System.out.println("请输入贷款的年数:");
        Double cyear = scanner.nextDouble();
        System.out.println("请输入每年的利息:");
        Double lDouble = scanner.nextDouble();
        scanner.close();


//使用公式计算客户每月付款:
//月利率
Double yDouble =lDouble/1200;
//( 1 +月利率 )^贷款月数)
Double d = Math.pow(1+yDouble, cyear*12);
// ( 月利率 * 贷款金额 )
Double aDouble = (yDouble*(mDouble-sDouble));
//每月付款 =                                                                            
//  ( 月利率 * 贷款金额 ) / ( 1 - (1 / ( 1 +月利率 )^贷款月数))
Double double1 =aDouble/(1-(1/(1+d)));
System.out.println("用户编号:"+this.getName(uname)+"\n"+"每月支付"+"$"+double1);
}
/**
 * 生成客户编号
 * @param name 用户名
 * @return
 */
public String getName(String name){
Random rand = new Random();
        int i = rand.nextInt(9001);
        if (i != 9000) {
            i = 101000 + i;
        }
        String randInt = (i + "").substring(1);
        String firstChar = name.substring(0, 1);
        return firstChar + randInt;
}
public static void main(String[] args) {
T t =new  T();
//测试数据:"测试", 200000.00, 40000.00, 2, 2.5;
//测试结果:
//$650.4263000946255
//测03799


}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-29
package com.lq.test;

import java.util.Random;
import java.util.Scanner;

public class BuyCar {
    
    @SuppressWarnings({ "unused", "resource" })
    public static void main(String[] args){
         String name;
         int cost;
         int firstpay;
         int year;
         double rate;
        System.out.print("请输入姓名");
        Scanner scan  = new Scanner(System.in);
        name = scan.next();
        System.out.print("请输入汽车价格");
        
        cost = scan.nextInt();
        System.out.print("请输入首付金额");
        
        firstpay = scan.nextInt();
        System.out.print("请输入贷款年份");
        
        year = scan.nextInt();
        System.out.print("请输入利率");
        
        rate = scan.nextDouble();
        
        double monthrate = rate/1200;
        
        System.out.println("月利率"+monthrate);
        
        int monthnum = year*12;
        
        System.out.println("贷款多少月"+monthnum);
        
        double monthpay = (monthrate*cost)/(1-(1/Math.pow((1+monthrate), monthnum)));
        
        DecimalFormat df = new DecimalFormat(".00");
        
        Random rd = new Random();
        
        int i = rd.nextInt(9001);
        
        if (i != 9000) {
            i = 101000 + i;
        }
        String randInt = (i + "").substring(1);
        String firstChar = name.substring(0, 1);
 
        System.out.println("客户编号:" + firstChar + randInt);
        
        System.out.println("每月支付"+df.format(monthpay)+"元");
        
    }
    
}

追问

这个应该怎么解决

追答

这个是格式化金额的 就是保留两位小数

在最上面第二行加上import java.text.DecimalFormat;就好了

第2个回答  推荐于2017-10-06

有两问题没解决:

1、计算公式里的那个贷款月数前面那个符号是什么意思?不懂,所以那个不知道怎么写。

2、里面的钱、利率什么的可能会涉及到小数点的问题,暂时没有做处理,(实际运行可能出现小数点后10多位的情况)

3、你说的格式化为钱是什么意思?

System.out.println("请输入姓名:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("请输入汽车成本:");
        Double carAmount = scanner.nextDouble();
        System.out.println("请输入首付:");
        Double firstAmount = scanner.nextDouble();
        System.out.println("请输入贷款的年数:");
        Double years = scanner.nextDouble();
        System.out.println("请输入每年的利息:");
        Double yearTax = scanner.nextDouble();
        scanner.close();

        // 贷款金额
        Double loans = carAmount - firstAmount;
        // 月利率
        Double monthTax = (yearTax / 100) / 12;

        Double months = years * 12;
        Double monthAmount = 0.0;
        // XXX 待修改
        // Double monthAmount = (monthTax * loans) / (1 - ((1 + monthTax) ^ months));

        // 随机数0-10000
        Random rand = new Random();
        int i = rand.nextInt(9001);
        if (i != 9000) {
            i = 101000 + i;
        }
        String randInt = (i + "").substring(1);
        String firstChar = name.substring(0, 1);

        System.out.println("客户编号?:" + firstChar + randInt);
        System.out.println("每月应付金额:" + monthAmount);

追问

    次方的意思

    取小数点两位吧

    就是最后金额的时候带上钱的标志$

追答        // 贷款金额
        Double loans = Demo.sub(carAmount, firstAmount);
        // 月利率(年利率直接除以12计算的)
        Double monthTax = Demo.div(Demo.div(yearTax, 100.0), 12.0);

        // 月数
        Double months = years * 12;
        // 计算
        // 分母
        Double denominator = Demo.sub(1, Math.pow((1 + monthTax), months));
        Double monthAmount = Demo.div(Demo.mul(monthTax, loans), denominator);
        // 随机数0-10000
        Random rand = new Random();
        int i = rand.nextInt(9001);
        if (i != 9000) {
            i = 101000 + i;
        }
        String randInt = (i + "").substring(1);
        String firstChar = name.substring(0, 1);
        System.out.println("客户编号:" + firstChar + randInt);
        System.out.println("每月应付金额:" + monthAmount+"$");

前面的读取的代码一样,省略了。Demo里加了一个工具加减乘除的方法。将Double转换成BigDecimal然后计算,然后保留两位小数。字数超出了,所以没贴出来。

本回答被提问者采纳
第3个回答  2014-09-29

第4个回答  2014-09-29
你这里的月利率和年利率是什么关系,简单的除12还是(1+月利率)^12=1+2.5%这么计算

全国计算机二级等级考试java是有题库吗?
有题库的。根据《全国计算机等级考试二级Java语言程序设计考试大纲(2018年版) 》,计算机二级ava考试主要考Java 语言的特点和实现机制、Java 体系结构、Java 语言中面向对象的特性、Java 语言的基本数据类型和运算、Java 语言的基本语句。Java 编程基本技术、编写用户界面程序基础、编写小应用程序(Applet)基础...

计算机二级考试每个人的题一样吗?有没有可能抽到简单的题
计算机二级考试每个人的题一样吗?有没有可能抽到简单的题 你好,都是随机抽题,每个人都不一样,你运气好就抽到简单的,也可能抽到难的。 有问题可以摆渡《腾跃英语计算机学院》老师会给你解答问题。祝你早日通过考试。计算机二级考试的编程题算法正确结果正确有没有可能不拿满分? 您好,这样的...

JAVA面试的时候一般考什么
首先是Java基础,这个很简单,也就是考考你对Java语言本身的理解,包括语法,类库的使用等。有选择题,也会有写程式码题。写程式码的时候认真仔细就是了。基础题答案一般都比较死,所以尽量不要错。在这,出一道我遇到的题考考大家,Java程式设计:把American,Japan,China,France,Brazil按英文字母排...

JAVA Scrip、JAVA EE,和JAVA有什么区别。我该先学哪个呢?哪个入门比 ...
JAVA是一门语言,JAVA EE是JAVA的应用,就像数学,你先认识加、减、乘、除(JAVA)才能学数学应用题(JAVA EE);JAVA Scrip是脚本语言,是做WEB前端的,也就是做界面的。学习JAVA EE必需有JAVA的基础,同时也要有HTML和Java Script等这些基础,不然根本没法学下去,我也是刚学J2EE不久,希望我的理...

计算机二级多少分
计算机二级分值分配两级Java语言编程:单选题40分(含公共基础知识10分)。操作题60分(包括基本操作题、简单应用题和综合应用题)。两级MySQL数据库编程:单选题40分(含公共基础知识10分);操作题60分(包括基本操作题、简单应用题、综合应用题)两级Web编程;单选题40分(含公共基础知识10分);操作...

计算机二级有哪些科目?
二级visual basic语言程序设计:1、单项选择题 40 分 (含公共基础知识部分 10 分);2、 操作题 60 分 (包括基本操作题、简单应用题及综合应用题)。二级Java语言程序设计:1、单项选择题 40 分(含公共基础知识部分 10 分);2、操作题 60 分(包括基本操作题、简单应用题及综合应用题)。二级...

java该如何学习?
一、爱好 这个是动力,如果你不爱Java,不爱计算机,而是喜爱游戏,娱乐或者其他的,你不适合做程序员。如果你能在电脑前,一坐就是4-5个小时,你能为了学习而阅读英文的资料,那么你至少对编程是热爱的,具备了程序员的潜质。二、学会取舍,用到什么就学什么 编程路上知识点甚多,你能掌握的永远是...

计算机二级考试题型
计算机二级MS Office 高级应用的题型为单项选择题、文字处理题、电子表格题、演示文稿题。计算机二级C语言程序设计的题型为单项选择题、程序填空题、程序改错题、程序设计题。二级Java语言程序设计 题型及分值 单项选择题 40 分(含公共基础知识部分 10 分)。操作题 60 分(包括基本操作题、简单应用题及...

安卓的应用只可以用java编写吗
安卓的应用只可以用java编写吗 当然不是了,使用Java开发是标准开发流程,也是官方推荐的开发方式,但是因为android是基于linux核心的,所以,基于其他语言开发也是可以的,官方也推出了类似NDK这样的基于C语言开发的SDK,便于方便直接呼叫底层程式码。 不过主流的开发语言是Java,其他语言开发需要控制好指标...

新疆计算机二级考试内容包括哪些谁知道
九、JavaSDK6.0 的下载和安装。考试方式 上机考试,考试时长 120 分钟,满分 100 分。1. 题型及分值 单项选择题 40 分(含公共基础知识部分 10 分)。 操作题 60 分(包括基本操作题、简单应用题及综合应用题)。2. 考试环境 操作系统:中文版 Windows 7。 开发环境:jdk1.6.0 或 NetBeans ...

相似回答