黑马程序员技术交流社区
标题:
家庭收支小程序
[打印本页]
作者:
645420297
时间:
2013-4-10 15:56
标题:
家庭收支小程序
本帖最后由 645420297 于 2013-4-21 10:47 编辑
class FamilyAccount
{
public static void main(String[] args)
{
int balance = 10000;
String details="收支\t账户金额\t收支金额\t说明";
boolean loopFlag=true;
int h = 0;
String s1="";
do
{
System.out.println("\n--------------------家庭收支 记账软件--------------------");
System.out.println();
System.out.println("\t"+ "1 收支明细");
System.out.println("\t"+ "2 登记收人");
System.out.println("\t"+ "3 登记支出");
System.out.println("\t"+ "4 退 出");
System.out.println();
System.out.println();
System.out.print("\t"+"请选择(1-4):");
//从键盘上读取1,2,3,4四个字符
char c=Utility.readMenuSelection();
switch(c){
case'1':
System.out.println("--------------------当前收支明细记录---------------------");
System.out.println( details+"\n"+"收入"+"\t"+balance+"\t\t"+h+"\t\t"+s1);
System.out.println();
System.out.println();
break;
case'2':
System.out.print("本次收人金额:");
int n=Utility.readNumber();
//账户金额累加
//怎样用更简单的方法把已经累加的结果返回到details中?
balance+=n;
h=balance-10000;
System.out.print("本次收支说明");
String s=Utility.readString();
s1+=s;
break;
case'3':
System.out.print("本次支出金额:");
int z=Utility.readNumber();//读取支出的金额
System.out.println("本次支出说明");
String o=Utility.readString();
break;
case'4':
System.out.print("确认是否退出(Y/N):");
char m=Utility.readConfirmSelection();
//如果Y,将标志位反转,当运行到While循环末尾时
//条件不成立,故跳出循环
if (m=='Y')
{
loopFlag=false;
}
break;
}
} while (loopFlag);
}
}
复制代码
作者:
645420297
时间:
2013-4-10 15:59
问题就在代码中 这是引用的功能
import java.util.*;
public class Utility {
private static Scanner scanner = new Scanner(System.in);
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1);
c = str.charAt(0);
if (c != '1' && c != '2' && c != '3' && c != '4') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
public static int readNumber() {
int n;
for (; ; ) {
String str = readKeyBoard(4);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
}
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
private static String readKeyBoard(int limit) {
String line = "";
while (scanner.hasNext()) {
line = scanner.nextLine();
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
复制代码
作者:
王军行
时间:
2013-4-10 16:33
本帖最后由 王军行 于 2013-4-10 16:37 编辑
第二张代码31行多一个“}”
第一页s1+=s; 中s 未定义
Utility类readString()方法没有
作者:
黄玉昆
时间:
2013-4-21 07:31
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2