有關於String 的問題

Java 課程討論區 -Java 之大家來找碴

版主: 蔡明志, rachel, yuje, benwu

分享到: Facebook

有關於String 的問題

文章callmewade » 週二 11月 12, 2013 1:56 am

寫一個程式(DigitCount.java)可以接受使用者輸入的字串,計算字串中每個數字出現的次數並將10個數字中每個數字出現的次數印出(有些數字出現的次數可能是0,次數為0則不用印出),輸入的字串可能會包含字母,必須跳過字母。
例如:
使用者輸入: 5 8 B 9 6 5 3 5 A 9 9 9 6
你的程式要輸出:
數字 5 出現 3 次
數字 8 出現 1 次
數字 9 出現 4 次
數字 6 出現 2 次

代碼: 選擇全部
package digitcount;

import java.util.Scanner;

public class DigitCount {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a string of your choice:");
        String inSt = input.nextLine();
        System.out.println("you just entered: " + inSt);
       

        counting(inSt);

    }

    public static void counting(String inSt) {
        System.out.println("Here is the counting method");
        int total = 0;
        for (int k = 0; k <= 9; k++) {
            for (int i = 0; i < inSt.length(); i++) {

                if (inSt.charAt(i) == k) {
                    total++;
                }
            }
            System.out.println(k + " 有 " + total + "次");
            total = 0;
        }

        // TODO code application logic here
    }
}


這是我打的部分 檢查很多次了 應該不是邏輯上的問題
我發現大概是
代碼: 選擇全部
                if (inSt.charAt(i) == k) {
                    total++;
                }
這部分有些問題

我想請問 inSt.charAt(i) == k 這行有錯嗎?
我事很多次了 發現問題應該就是這行
可是我不了解是錯在哪?
或是其他部分出錯?(應該不是吧)
callmewade
剛學走路的小朋友
 
文章: 2
註冊時間: 週五 9月 27, 2013 9:46 am

Re: 有關於String 的問題

文章XO » 週二 11月 12, 2013 7:42 pm

樓上的也在修 DC 課程,挺用功的嘛!
你說的沒錯,就是 inSt.charAt(i) == k 這行錯了!

問一個簡單問題: 字元 (char) 裡的 '1' 會等於整數(int) 裡的 1 嗎?
Think, 再有問題的話... 繼續 PO 上來唄!
我猜這個版的版主們大概現在比較少上站了 ~~~

BTW, PO 文裡有程式,若要保有 indentation / 對齊,可以用 Code 標籤前後包抄夾起來。
我已經幫你修正了!
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5351
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.

Re: 有關於String 的問題

文章albert.chen » 週四 11月 14, 2013 12:41 am

XO 寫:樓上的也在修 DC 課程,挺用功的嘛!
你說的沒錯,就是 inSt.charAt(i) == k 這行錯了!

問一個簡單問題: 字元 (char) 裡的 '1' 會等於整數(int) 裡的 1 嗎?
Think, 再有問題的話... 繼續 PO 上來唄!
我猜這個版的版主們大概現在比較少上站了 ~~~

BTW, PO 文裡有程式,若要保有 indentation / 對齊,可以用 Code 標籤前後包抄夾起來。
我已經幫你修正了!

老師說的沒錯,char 其實它本身就是一個數字,不如說是編號(ASCII code)
而在 char 中的數字編號是從 48 開始,所以其實假使你 char 抓到的字元是 '0',但其實它字元編碼上是數值 48,並非數值 0。
以更動你程式最少的改法,你只要將你抓到的 char-48 就行了!
頭像
albert.chen
漸有心得的高中生
 
文章: 155
註冊時間: 週五 6月 10, 2011 12:17 pm

Re: 有關於String 的問題

文章XO » 週四 11月 14, 2013 10:57 pm

其實迴圈裡控制變數的型態也可以是 char。
都講得這麼白了... 答案呼之欲出,原 PO 看你上站了,怎麼都沒反應呀? ^o^
eXtra Old 的是我「不是酒」哦!
제 이름은 오조휘 입니다

臉書裡依舊是 Extra.Old: http://www.facebook.com/extra.old
頭像
XO
資管系教師
 
文章: 5351
註冊時間: 週二 4月 27, 2004 12:20 pm
來自: CQ Inc.


回到 Java 之 大家來找碴

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron