對字元串進行簡單的字元數字統計 探索java中的List功能

来源:http://www.cnblogs.com/zyn95186/archive/2016/04/08/5369961.html
-Advertisement-
Play Games

題目: 統計一個字元串中數字和字元串的個數,並分別進行排列,要求 1.數字,字元串可以從鍵盤獲取。 2.儲存在list 3.統計數字個數,字元串個數 4.把數字和字元串按從小到大的順序輸出 5.不能使用數組. List的用法 List包括List介面以及List介面的所有實現類。因為List介面實現 ...


題目:

統計一個字元串中數字和字元串的個數,並分別進行排列,要求

1.數字,字元串可以從鍵盤獲取。

2.儲存在list

3.統計數字個數,字元串個數

4.把數字和字元串按從小到大的順序輸出

5.不能使用數組.

List的用法

List包括List介面以及List介面的所有實現類。因為List介面實現了Collection介面,所以List介面擁有Collection介面提供的所有常用方法,又因為List是列表類型,所以List介面還提供了一些適合於自身的常用方法。【自行百度】

List介面提供的適合於自身的常用方法均與索引有關,這是因為List集合為列表類型,以線性方式存儲對象,可以通過對象的索引操作對象。

List介面的常用實現類有ArrayList和LinkedList,在使用List集合時,通常情況下聲明為List類型,實例化時根據實際情況的需要,實例化為ArrayList或LinkedList,例如:

List<String> l = new ArrayList<String>();// 利用ArrayList類實例化List集合

但是!在筆者的eclipse中,如果是在main函數中申明的話,需要寫全,不然會出現很美妙的紅色波浪線【筆者在這裡糾結了好久好久。。。。】

    
        java.util.List<String> list=new ArrayList<String>();
        

但是在public class中就直接申明就好

1     
2     static List<String> number=new ArrayList<String>();
3     static List<String> word=new ArrayList<String>();
4     

這裡是申明瞭兩個string型的list,分別用來存放字元串中的數字和字元串

為了實現題目中要求,建立了幾個自定義函數

 計數函數  static void count(List<String> l)

1     static void count(List<String> l){
2         for(int i=0;i<l.size();i++){
3             if(isnumber(l.get(i))){
4                 number.add(l.get(i));
5             }else word.add(l.get(i));
6         }
7         System.out.println("NUMBERCOUNT:  "+number.size());
8         System.out.println("WORDCOUNT:  "+word.size());
9     }//統計字元串和數字的個數

其中List.add(String str)往list中添加str。List.get(int index)用於獲得對象。

判斷字元串是否是數字有這麼幾種方法:

1.使用Character.isDigit(char)判斷

1 char num[] = str.toCharArray();//把字元串轉換為字元數組
2 StringBuffer title = new StringBuffer();//使用StringBuffer類,把非數字放到title中
3 StringBuffer hire = new StringBuffer();//把數字放到hire中
4 for (int i = 0; i < num.length; i++) {
5 // 判斷輸入的數字是否為數字還是字元
6 if (Character.isDigit(num[i])) {把字元串轉換為字元,再調用Character.isDigit(char)方法判斷是否是數字,是返回True,否則False
7 hire.append(num[i]);// 如果輸入的是數字,把它賦給hire} else {title.append(num[i]);// 如果輸入的是字元,把它賦給title}}}

 

2.使用類型轉換判斷

1 try {String str="123abc";
2 int num=Integer.valueOf(str);//把字元串強制轉換為數字
3 return true;//如果是數字,返回True
4 } catch (Exception e) {
5 return false;//如果拋出異常,返回False}

 

3.使用正則表達式判斷

String str = "";
boolean isNum = str.matches("[0-9]+");


//+表示1個或多個(如"3"或"225"),*表示0個或多個([0-9]*)(如""或"1"或"22"),?表示0個或1個([0-9]?)(如""或"7")
ps:這個方法只能用於判斷是否是正整數

 

筆者程式里直接使用了第二種方法:

1     static boolean isnumber(String a){
2          try {
3                Integer.parseInt(a);//數字字元串轉換int型數字    “123”->123
4                return true;
5               } catch (Exception e) {
6                return false;
7               }
8     }//判斷是否為數字

Integer.parseInt(a)函數,如果a中含有非數字,就會拋出異常。return false。

排序函數是調用了collection下的一個sort自帶函數【很好用!】

1     //Collections.sort排序
2         Collections.sort(number);
3         Collections.sort(word);

這樣的話,number和word直接變成了有序從小到大排列的list。

排序其實還有一種方法,是通過調用compare函數。

完整程式:

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.List;
 4 import java.util.Scanner;
 5 
 6 
 7 public class classtest {
 8     
 9     
10     static List<String> number=new ArrayList<String>();
11     static List<String> word=new ArrayList<String>();
12     
13     
14     static void count(List<String> l){
15         for(int i=0;i<l.size();i++){
16             if(isnumber(l.get(i))){
17                 number.add(l.get(i));
18             }else word.add(l.get(i));
19         }
20         System.out.println("NUMBERCOUNT:  "+number.size());
21         System.out.println("WORDCOUNT:  "+word.size());
22     }//統計字元串和數字的個數
23     
24     
25     static boolean isnumber(String a){
26          try {
27                Integer.parseInt(a);//數字字元串轉換int型數字    “123”->123
28                return true;
29               } catch (Exception e) {
30                return false;
31               }
32     }//判斷是否為數字
33     
34 
35     
36     public static void main(String[] args) {
37         
38         System.out.println("please input the string");
39         Scanner get=new Scanner(System.in);
40         String str=get.nextLine();
41         System.out.println("string is "+str);//鍵盤獲取字元串
42         
43         java.util.List<String> list=new ArrayList<String>();//problem?
44         
45         String[] text = str.split(" ");
46         for(int i=0;i<text.length;i++){
47             list.add(text[i]);
48         }//存入list
49         
50         
51         classtest.count(list);
52     
53     //Collections.sort排序
54         Collections.sort(number);
55         Collections.sort(word);
56         System.out.println("number sort:"+number);
57         System.out.println("word sort:"+word);
58     }
59 
60 }

程式其實不難,但是由於自身對java的不熟悉,折騰了很久【差點砸電腦……】

程式運行結果:

好了……寶寶繼續做下一道題……


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • uniq命令: 常見參數: -c,--count ***** 在每行旁邊顯示改行重覆出現的次數 -d,--repeated 僅顯示重覆出現的行,2次或2次以上的行,預設的去重包含1次。 例子: a.只對相鄰的相同行內容去重。 [root@nfs-server test]# cat test.txt ...
  • 恢復內容開始 最近看了園子里的大神分享的springnet框架的知識,感覺挺不錯的,自己閑下來也研究研究springnet。這幾天看了springnet容器的基礎篇IOC和AOP,也有點個人理解分享一下,記錄一下自己的學習筆記,歡迎大家提出問題一塊研究解決。 入門springnet首先瞭解一下什麼是 ...
  • 本文譯自 Nick Waggoner 的 "Understand what’s possible with the Windows UI Animation Engine",已獲原作者授權進行翻譯。更多有關 Windows UI、UWP 開發的文章,歡迎訪問我的博客源站:http://validvo ...
  • 我們都想追求完美 Every view in the app has an empty codebehind file, except for the standard boilerplate code that calls InitializeComponent in the class's co ...
  • 先上效果圖如下: 1、本公式自定義配置計算器的實現基於DataTable.Compute()的用法,該函數用法詳細參考文檔;本示例支持條件公式、計算公式的配置 2、界面樣式 3、界面腳本 4、界面HTML源碼 5、後臺代碼 6、擴展 在此基礎上可以進一步發揮的空間很大 》結合存儲設計如資料庫等,參數 ...
  • 在網頁中,我們經常需要引用大量的javascript和css文件,在加上許多javascript庫都包含debug版和經過壓縮的release版(比如jquery),不僅麻煩還很容易引起混亂,所以ASP.NET MVC4引入了Bundles特性,使得我們可以方便的管理javascript和css文件 ...
  • 新公司,剛來幾天,閑著沒事,領導讓我做些無關痛癢的活,優化報表統計!!!之前是用flash做的,現在要改成echart實現。好吧,之前沒用過,抱著學習態度,研究了下。寫點東西打發下時間,能幫到需要幫助朋友更好。好了廢話少說,開搞! 第一步搞個頁面: 第二部:添加相關js引用,參照api,初始化js和 ...
  • 在C#中進行RSA解密,需要用RSACryptoServiceProvider,但是不支持OpenSSL格式的公鑰或者私鑰。 X509 公鑰 非加密 PKCS#8 私鑰 PKCS#1 私鑰 引用以下 Nuget 包 https://www.nuget.org/packages/System.Exte ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...