-3

I am creating a program which converts numbers to words. To do this I want to play lot of codes. Is there any way to do this in a short way?

My code

public String ConvertViews(int number){
    // 1
    int a = 999;
    int b = 1099;
    int c = 1200;
    int d = 1299;
    int e = 1300;
    int f = 1399;
    int g = 1400;
    int h = 1499;
    int i = 1500;
    int j = 1599;
    int k = 1600;
    int l = 1699;
    int m = 1700;
    int n = 1799;
    int o = 1800;
    int p = 1899;
    int q = 1900;
    int r = 1999;
    int s = 2000;
    int t = 2099;
    int u = 2100;
    int v = 2199;
    int w = 2200;
    int x = 2299;
    int y = 2300;
   
 
    if(number < b && number > a){
      return "1k+";
    } else if (number < a){
      return "number";
    } else if(number > b && number < c){
      return "1.1k+";
    }else if(number > b && number < d){
      return "1.2k+";
    }else if(number > d && number < g){
      return "1.3k+";
    }else if (number > f && number < i){
      return "1.4k+";
    }else if(number > h && number < k){
      return "1.5k+";
    }else if(number > j && number < m){
      return "1.6k+";
    }else if(number > l && number < o){
      return "1.7k+";
    }else if(number > n && number < q){
      return "1.8k+";
    }else if(number > p && number < s){
      return "1.9k+";
Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Vedang
  • 33
  • 1
  • 10
  • 4
    Welcome to Stack Overflow. Please take the [tour](https://stackoverflow.com/tour), read about what's [on-topic](https://stackoverflow.com/help/on-topic), and read [How to Ask a Good Question](https://stackoverflow.com/help/how-to-ask). – Ivo Mori Jul 11 '20 at 07:36
  • 1
    _As a hint_: Instead of listing the numbers explicitly, and then doing a comparison; it's shorter to do a computation like (`number / 1000` using `double`) and then format that result to the desired output string. – Ivo Mori Jul 11 '20 at 07:40
  • Check out this https://stackoverflow.com/questions/4753251/how-to-go-about-formatting-1200-to-1-2k-in-java – Arpan Sarkar Jul 11 '20 at 19:57

2 Answers2

3

Try this.

public static String convertViews(int n) {
    if (n < 1000) return "number";
    String f = String.format("%.1f",
        Math.floor(n / 100) / 10).replaceAll("\\.0*$", "");
    return f + "k+";
}
0

Please describe your question better next time. But please try this code anyway, if I understand your question correctly, this code should work. To use the "Ranges" class you have to add https://commons.apache.org/proper/commons-lang/download_lang.cgi to your project as a library. In this code I convert your integer to ranges and ask individually whether the specified integer is in the range.

public static String ConvertViews(int number) {

    Range<Integer> firstIf = Range.between(999,1099);
    Range<Integer> secondIf = Range.between(1099,1200);
    Range<Integer> thirdIf = Range.between(1099,1299);
    Range<Integer> fourthIf = Range.between(1299,1400);
    Range<Integer> fifthIf = Range.between(1399,1500);
    Range<Integer> sixthIf = Range.between(1499,1600);
    Range<Integer> seventhIf = Range.between(1599,1700);
    Range<Integer> eighthIf = Range.between(1699,1800);
    Range<Integer> ninthIf = Range.between(1799,1900);
    Range<Integer> tenthIf = Range.between(1899,2000);


    if (firstIf.contains(number)) {
        return "1k+";
    } else if (number < 999) {
        return "number";
    } else if (secondIf.contains(number)) {
        return "1.1k+";
    }else if (thirdIf.contains(number)) {
        return "1.2k+";
    } else if (fourthIf.contains(number)) {
        return "1.3k+";
    } else if (fifthIf.contains(number)) {
        return "1.4k+";
    } else if (sixthIf.contains(number)) {
        return "1.5k+";
    } else if (seventhIf.contains(number)) {
        return "1.6k+";
    } else if (eighthIf.contains(number)) {
        return "1.7k+";
    } else if (ninthIf.contains(number)) {
        return "1.8k+";
    } else if (tenthIf.contains(number)) {
        return "1.9k+";
    }

    return "ERROR: no match found";
}
verity
  • 375
  • 1
  • 11