簡體   English   中英

設定數字重復多少次的程序

[英]Program about how many times the number has been repeated

例如,我想找到多少次重復1,重復數123900148,它必須被寫入2次,但是每次都得到錯誤的值

Scanner input = new Scanner(System.in);
@author Başar Ballıöz

int counter = 0;
int repeat;
int tmp;


System.out.print("Enter A Number: ");
tmp = input.nextInt();
String number = Integer.toString(tmp);


System.out.print("Enter A Number You Want To Find: ");
repeat = input.nextInt();


for (int i = 0; i < number.length() - 1 ; i++) {    

    if (number.substring(i , i+1).equals(repeat))

    counter++;
}

System.out.println(repeat + " number " + counter + " repeated.");

我想看到我的輸出像:

number : 134211
number i want to find how many times repeated: 1
your number has repeated 3 times

您正在將一個String (由number.substring(i , i+1 )與一個Integer ,因此,它將始終返回false

比較兩個int或兩個String 由於本質上是比較兩個數字,因此比較int會更有效。

for (int i = 0; i < number.length(); i++) {    
    if (Character.getNumericValue(number.charAt(i)) == repeat) {
        counter++;
    }
}
  Scanner input = new Scanner(System.in);

    int counter = 0;
    int repeat;
    int tmp;

    System.out.print("Enter A Number: ");
    tmp = input.nextInt();
    String number = Integer.toString(tmp);

    System.out.print("Enter A Number You Want To Find: ");
    repeat = input.nextInt();

    while (tmp > 0) {

        if (tmp % 10 == repeat) {
            counter++;               
        }
        tmp = tmp/10;
    }

    System.out.println(number + " number " + counter + " repeated.");

您正在通過equalsStringInteger進行比較,因此無法獲得預期的結果。 而是在比較之前將整數轉換為字符串:

 if (number.substring(i , i+1).equals(String.valueOf(repeat)))

此外,您可以將String.valueOf(repeat)的結果緩存到for循環之前的變量中for以防止在每次循環迭代中構造字符串對象。

嘗試這個。 我添加了一些有用的輸出,以便您可以看到如何對其進行索引。

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class CountChars {

    public static void main(String [] args) {

        Scanner input = new Scanner(System.in);

        System.out.print("Enter A String: ");
        Map<String, Integer> map = indexString(input.nextLine());

        while (true) {
            System.out.print("Enter A Character You Want To Count (ENTER to exit): ");
            String repeat = input.nextLine();
            if (repeat == null || repeat.isEmpty()) {
                break;
            }
            System.out.println(String.format("'%s' was repeated %d time(s).", repeat, (map.containsKey(repeat)) ? map.get(repeat):Integer.valueOf(0)));
        }
    }

    private static Map<String, Integer> indexString(String s) {
        Map<String, Integer> map = new HashMap<>();
        System.out.println(String.format("'%s' has %d characters.  Indexing now.", s, s.length()));
        for (int i = 0; i < s.length() ; i++) {
            String c = String.valueOf(s.charAt(i));
            if (!map.containsKey(c)) {
                map.put(c, 0);
                System.out.println(String.format("Indexing %s", c));
            }
            System.out.print(String.format("Incrementing '%s' from %d ", c, map.get(c)));
            map.put(c, map.get(c) + 1);
            System.out.println(String.format("to %d.", map.get(c)));
        }
        return map;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM