java 家庭收支賬戶

代碼1

package lesson.project.p1_familyAccount;import java.util.Scanner;public class FamilyAccount {public static int money = 10000;public static String all = "";public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (true) {show();String s = scanner.next();switch (s) {case "1":show();System.out.println("收支\t金額\t明細\t");System.out.println(all);System.out.println("余額:" + money);break;case "2"://收入System.out.println("金額:");String b = scanner.next();System.out.println("明細:");String d = scanner.next();all+="收入"+"\t"+b+"\t"+d+"\t"+"\n";money += Integer.parseInt(b);break;case "3"://支出System.out.println("金額:");String b1 = scanner.next();System.out.println("明細:");String d1 = scanner.next();all+="支出"+"\t"+b1+"\t"+d1+"\t"+"\n";money -= Integer.parseInt(b1);break;case "4":while (true) {System.out.println("是否要退出?(Y\\N)");String choose = scanner.next();if (choose.equals("Y") || choose.equals("y")) {System.exit(0);} else if (choose.equals("N") || choose.equals("n")) {break;} else {System.out.println("輸入不合法!請重新輸入");}}break;default:System.out.println("輸入不合法!請重新輸入");show();break;}}}public static void show() {System.out.println("家庭收支賬戶:");System.out.println("1.查看賬戶");System.out.println("2.增加收入");System.out.println("3.減少收入");System.out.println("4.退出賬戶");System.out.println("請選擇功能:");}
}

代碼2

工具類

package lesson.project.p1_familyAccount.version2;import java.util.Scanner;/**Utility工具類:將不同的功能封裝為方法,就是可以直接通過調用方法使用它的功能,而無需考慮具體的功能實現細節。*/
public class Utility {private static Scanner scanner = new Scanner(System.in);/**用于界面菜單的選擇。該方法讀取鍵盤,如果用戶鍵入’1’-’4’中的任意字符,則方法返回。返回值為用戶鍵入字符。*/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;}/**用于收入和支出金額的輸入。該方法從鍵盤讀取一個不超過4位長度的整數,并將其作為方法的返回值。*/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;}/**用于收入和支出說明的輸入。該方法從鍵盤讀取一個不超過8位長度的字符串,并將其作為方法的返回值。*/public static String readString() {String str = readKeyBoard(8);return str;}/**用于確認選擇的輸入。該方法從鍵盤讀取‘Y’或’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;}
}

家庭收支

package lesson.project.p1_familyAccount.version2;public class FamilyAccount {public static void main(String[] args) {String details = "收支\t賬戶金額\t收支金額\t說    明\n";int balance = 10000;boolean loopFlag = true;do {System.out.println("\n-----------------家庭收支記賬軟件-----------------\n");System.out.println("                   1 收支明細");System.out.println("                   2 登記收入");System.out.println("                   3 登記支出");System.out.println("                   4 退    出\n");System.out.print("                   請選擇(1-4):");char key = Utility.readMenuSelection();System.out.println();switch (key) {case '1':System.out.println("-----------------當前收支明細記錄-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2':System.out.print("本次收入金額:");int amount1 = Utility.readNumber();System.out.print("本次收入說明:");String desc1 = Utility.readString();balance += amount1;details += "收入\t" + balance + "\t\t" +amount1 + "\t\t" + desc1 + "\n";System.out.println("---------------------登記完成---------------------");break;case '3':System.out.print("本次支出金額:");int amount2 = Utility.readNumber();System.out.print("本次支出說明:");String desc2 = Utility.readString();balance -= amount2;details += "支出\t" + balance + "\t\t" +amount2 + "\t\t" + desc2 + "\n";System.out.println("---------------------登記完成---------------------");break;case '4':System.out.print("確認是否退出(Y/N):");char yn = Utility.readConfirmSelection();if (yn == 'Y') loopFlag = false;break;}} while (loopFlag);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446251.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446251.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446251.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Android 13】使用Android Studio調試系統應用之Settings移植(四):40+個依賴子模塊之ActionBarShadow

文章目錄 一、篇頭二、系列文章2.1 Android 13 系列文章2.2 Android 9 系列文章2.3 Android 11 系列文章三、子模塊AS移植3.1 AS創建目標3.2 創建ActionBarShadow(1)使用VS Code打開org_settings/SettingsLib目錄(2)ActionBarShadow的Manifest.xml(3)ActionBarShadow的An…

STL源碼剖析 關聯式容器

STL關聯式容器以set(集合) 和 map(映射表)兩大類&#xff0c;以及對應的衍生體構成,比如mulyiset(多鍵集合) multimap(多鍵映射表) ,容器的底層均基于紅黑樹RB-Tree也是一個獨立的容器&#xff0c;但是不對外開放此外還提供了標準之外的關聯式容器 hash table散列表&#xff0c…

python求小于n的所有素數_用python求出2000000內所有素數的和?不知怎么寫?

展開全部 import itertools import time N 2000000 L range(N) def findnxt(s): flag 0 for n in itertools.ifilter(None, L[s1:]): return n t0 time.time() n 2 X int(N ** .5) while n < X: for i, x in enumerate(L[::n][1:]): if i0: continue L[x] 0 n findn…

STL源碼剖析 關聯式容器 紅黑樹

概念 紅黑樹不僅僅是一個二叉樹&#xff0c;必須滿足如下條件1&#xff0c;每個節點不是紅色就是黑色 (深色底紋為黑色&#xff0c;淺色底紋為紅色)2&#xff0c;根節點是黑色的3&#xff0c;如果節點為紅&#xff0c;其子節點必須為黑色的4&#xff0c;任一節點至NULL(樹的尾…

java藍橋杯 試題-基礎練習-數列排序

試題-基礎練習-數列排序 題目 問題描述   給定一個長度為n的數列&#xff0c;將這個數列按從小到大的順序排列。1<n<200 輸入格式   第一行為一個整數n。   第二行包含n個整數&#xff0c;為待排序的數&#xff0c;每個整數的絕對值小于10000。 輸出格式   輸出…

python生成的詞云沒有圖案_還在為專欄封面發愁?我用Python寫了個詞云生成器!...

媽媽再也不用擔心我寫專欄找不到合適的封面了&#xff01;B站專欄的封面至少是我一直頭疼的問題&#xff0c;每次寫完文章卻找不到合適的圖片作為封面。 詞云是一個很不錯的選擇&#xff0c;既美觀&#xff0c;又提綱挈領。網上也有詞云生成的工具&#xff0c;但大多收費/只能試…

java 1000以內的完數

題目 代碼 package lesson.l6_review;public class PrefectNumber {public static void main(String[] args) {for (int i 1; i <1000 ; i) {int num0;for (int j 1; j <i-1 ; j) {if (i%j0){numj;}}if (inum){System.out.print(i"\t");}}} }

STL源碼剖析 set集合

set的特性是 所有的元素會按照鍵值自動排序set 的鍵值等同于實值set不允許涵蓋兩個相同的鍵值不可以通過迭代器修改set的元素數值&#xff0c;這會破壞元素的排列順序。因此set<T>::iterator 被定義為底層RB-tree的const_iterator,杜絕寫入。也就是set的iterators是一種c…

python turtle畫圣誕樹動圖_圣誕節!教你用Python畫棵圣誕樹

作者 | 糖甜甜甜&#xff0c;985高校經管研二&#xff0c;擅長用 Python、R、tableau 等工具結合統計學和機器學習模型做數據分析。 如何用Python畫一個圣誕樹呢&#xff1f; 最簡單&#xff1a; 1height 5 2 3stars 1 4for i inrange(height): 5print(( * (height - i)) (** …

java藍橋杯 試題-基礎練習-十六進制轉八進制

試題-基礎練習-十六進制轉八進制 題目 試題 基礎練習 十六進制轉八進制 資源限制 時間限制&#xff1a;1.0s 內存限制&#xff1a;512.0MB 問題描述   給定n個十六進制正整數&#xff0c;輸出它們對應的八進制數。 輸入格式   輸入的第一行為一個正整數n &#xff08;1…

STL源碼剖析 map

所有元素會根據元素的鍵值自動被排序 元素的類型是pair&#xff0c;同時擁有鍵值和實值&#xff1b;map不允許兩個元素出現相同的鍵值pair 代碼 template <class T1,class T2> struct pair{typedef T1 first_type;typedef T2 second_type;T1 first; //publicT2 secon…

java api接口怎么寫_Java 如何設計 API 接口,實現統一格式返回?

來源&#xff1a;老顧聊技術前言接口交互返回格式控制層Controller美觀美化優雅優化實現方案前言在移動互聯網&#xff0c;分布式、微服務盛行的今天&#xff0c;現在項目絕大部分都采用的微服務框架&#xff0c;前后端分離方式&#xff0c;(題外話&#xff1a;前后端的工作職責…

java 輸出學生成績和成績等級

題目 從鍵盤讀入學生成績&#xff0c;找出最高分&#xff0c;并輸出學生成績等級。?成績>最高分-10 等級為’A’?成績>最高分-20 等級為’B’?成績>最高分-30 等級為’C’?其余 等級為’D’提示&#xff1a;先讀入學生人數&#xff0c;根據人數創建int數組&#…

STL源碼剖析 multiset 和 multimap

multiset和set完全相同&#xff0c;唯一的差別在于允許鍵值的重復&#xff0c;因此底層操作使用的是紅黑樹的insert_equal() 而不是insert_unique()multimap和map完全相同&#xff0c;唯一的差別在于允許鍵值的重復&#xff0c;因此底層操作使用的是紅黑樹的insert_equal() 而不…

java 二維數組

聲明和初始化 靜態初始化 // 靜態初始化&#xff1a; // 一維數組int[] arr1_1 {1, 2, 4};System.out.println(Arrays.toString(arr1_1)); // 二維數組int[][] arr1_2 {{1, 2}, {4, 5}, {9, 10}};for (int[] i :arr1_2) {System.out.print(Arrays.toS…

STL源碼剖析 hashtable

二叉搜索樹具有對數平均時間的表現&#xff0c;但是這個需要滿足的假設前提是輸入的數據需要具備隨機性hashtable 散列表這種結構在插入、刪除、搜尋等操作層面上也具有常數平均時間的表現。而且不需要依賴元素的隨機性&#xff0c;這種表現是以統計為基礎的 hashtable的概述 …

append在python里是什么意思_“一棵綠蘿七個鬼”是什么意思?臥室里到底能不能養綠蘿!...

很多人都喜歡在家里養盆綠蘿&#xff0c;一是能凈化室內空氣&#xff0c;讓家里綠意濃濃&#xff0c;更有生機一些&#xff1b;二是綠蘿好養&#xff0c;水培土培都行&#xff0c;養著也省心。在養花界有一句俗語&#xff1a;“一棵綠蘿七個鬼”&#xff0c;這句話是什么意思呢…

java 二分查找

注意 二分查找要求原數組為有序序列&#xff0c;從小到大 遞歸解法 public class problem9 {public static void main(String[] args) {int[] arr {1,2,3,4,6,7};int left 0;int right arr.length - 1;int value 2;System.out.println(Arrays.toString(arr));int index …

C++for_each| bind1st | ptr_fun | std::function的用法

c for_each 用法_小鍵233-CSDN博客 傳入參數 要傳入參數給global function ,需要使用 ptr_fun() 這個 function adapter 將global function 轉成function object , 然后再用bind2nd() 將參數bind成一個function object。&#xff08;這句話好拗口&#xff09; void fun(int i…

java三個柱子漢諾塔問題

題目 移動盤子&#xff0c;每一次只能移動一個&#xff0c;小盤子在大盤子上。 打印1 from A to B過程 注意 1&#xff09;盤子編號的變化和輔助柱子的變化 2&#xff09;當盤子編號為1時&#xff0c;結束遞歸&#xff0c;此時移動結束 代碼 package p2;/*** Illustratio…