| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 454 人关注过本帖
标题:刚学两个星期写的收银系统,完全是垃圾,大家帮忙解决几个问题
收藏  订阅  推荐  打印
ykilsjj
Rank: 1
等级:新手上路
帖子:3
积分:130
注册:2008-7-25
刚学两个星期写的收银系统,完全是垃圾,大家帮忙解决几个问题

刚刚学了几个星期的java,还是十足的菜鸟,大家多多指导
当我编译后,前几遍正常,但当输入特别大的值后(物品单价),就会跳出中间的一个while循环,不执行while(finalpay<=sum)的判断,也就是当付款值小于结算金额的时候也直接执行finalpay-sum,最后找的钱是负数,但又找不到什么原因,大家帮帮忙啊
还有就是想找个师傅,能帮我学习java,然后我会学sql-sever,c#,没有报酬,有的只是尊敬与汲取o(∩_∩)o...
下面是代码
package second;
import java.util.*;
public class xfd {
    public static void main(String[] args) {
        double i = 1;
        while (i >= 1) {
            Scanner input = new Scanner(System.in);
            int username = 111;
            int password = 111;
            System.out.print("请输入管理员账号:");
            int username1 = input.nextInt();
            System.out.println("");
            System.out.print("请输入管理员密码:");
            int password1 = input.nextInt();
            if (username == username1 && password == password1) {
                System.out.println("进入收银管理系统,按0键退出,除0的任意键继续");
                int enter = input.nextInt();
                if (enter == 0) {
                    break;
                }
                int j = 1;
                while (j >= 1) {

                    /*
                     * }else if(username!=username1&&password==password1){
                     * System.out.println("账号错误,请从新输入"); }else if
                     * (username!=username1&&password!=password1){
                     * System.out.println("账号密码错误,请重新输入:"); }else
                     * if(username==username1&&password!=password1){
                     * System.out.println("密码错误,请从新输入:"); }
                     */

                    System.out.print("请输入T恤价格");
                    double shirtSpace = input.nextInt();
                    System.out.print("请输入网球鞋价格");
                    double shoeSpace = input.nextInt();
                    System.out.print("请输入球拍价格");
                    double padSpace = input.nextInt();
                    System.out.print("请输入T恤数量");
                    int shirtNo = input.nextInt();
                    System.out.print("请输入球鞋数量");
                    int shoeNo = input.nextInt();
                    System.out.print("请输入球拍数量");
                    int padNo = input.nextInt();
                    System.out.print("请输入付款总额");
                    short sum = (short) ((shirtSpace * shirtNo + shoeSpace* shoeNo + padSpace * padNo) * 0.8);
                    double finalPay = 0;
                    finalPay = input.nextInt();
                    while (finalPay <= sum) {

                        System.out.println("金额不足!请再加钱");
                        double finalpayadd = input.nextInt();
                        finalPay = finalPay + finalpayadd;
                    }
                    System.out
                            .println("****************消费单***************\n\n");
                    System.out.println("购买数量\t单价\t个数\t金额");
                    System.out.println("T恤\t¥" + shirtSpace + "\t" + shirtNo+ "\t" + shirtSpace * shirtNo);
                    System.out.println("网球鞋\t¥" + shoeSpace + "\t" + shoeNo+ "\t" + shoeSpace * shoeNo);
                    System.out.println("网球拍\t¥" + padSpace + "\t" + padNo    + "\t" + padSpace * padNo + "\n\n\n");
                    int discount = 8;
                    System.out.println("折扣:\t\t" + discount + "折");
                    System.out.println("金额总计:" + "\t¥" + sum);
                    System.out.println("实际交费:" + "\t¥" + finalPay);
                    double returnMoney = finalPay - sum;
                    System.out.println("找钱:\t" + "\t¥" + returnMoney);
                    int score = (int) sum / 100 * 3;
                    System.out.println("本次购物所获得的积分是:" + "\t" + score);
                    System.out.println("****************谢谢光临*************\n\n");
                    System.out.println("按0键退出.任意键再按确定继续");
                    enter = input.nextInt();
                    if (enter == 0) {
                        System.out.println("退出收银系统");
                    break;
                    }
                }
                break;
            } else {
                System.out.println("账号或密码错误,请从新输入");
            }
        }
    }
}
2008-7-25 10:23
lzz4438253
Rank: 2
等级:注册会员
帖子:109
积分:1268
注册:2007-1-4

用户和密码都是用Int而不是String。。
我看不懂呵。。

2008-7-27 22:23
applewang83
Rank: 1
等级:新手上路
帖子:5
积分:160
注册:2008-6-23


朋友,你很有创意,北大青鸟的吧,第一,建议用户名和密码用string类型,可以用equals(“字符串”)来判定是否正确,此语句返回的是一个boolean值,之后是一个数据类型的问题了,int类型的范围是在-32768到+32767之间,如果取正,超过32767就会变成-32768,也就是说32767+1=-32768,虽然你在算总账的时候使用的是short类型的sum,但貌似short int和int在内存中占有的长度相同,所以范围等同于int,也就是说取值范围只在1-32767之间,超过了就会出错,建议改成long int,这样一个2的32次方的值应该不会容易再超。我也是刚学不久,如果有不对的地方请其他高手指教
2008-7-29 01:17
xxtkong
Rank: 1
等级:新手上路
帖子:8
积分:186
注册:2008-6-12

很  是厉害  我学了1  个多月java 看不懂呀   郁闷的很  囊个你们都那么厉害呀
2008-7-29 20:36
我的青春我做主
Rank: 1
等级:新手上路
帖子:10
积分:202
注册:2008-7-29
看看

double类型可以跟int类型的直接转换吗
2008-7-30 15:12
woshicl
Rank: 1
等级:新手上路
帖子:13
积分:220
来自:河北大学
注册:2008-3-26

没有很好的应用面向对象思想
2008-8-1 21:11
elan1986
Rank: 3Rank: 3
等级:中级会员
帖子:181
积分:2024
威望:2
注册:2007-12-17

加油!
还可以!
下次做的时候 记得做界面!
2008-8-2 00:56
共有 453 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.079193 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved