Home > Back-end >  How to replace an integer with a character, arrays, loops, Java
How to replace an integer with a character, arrays, loops, Java

Time:05-02

Hi guys, how are you? =) I'm new to Java, currently, I'm learning arrays and loops.

I have a task, and I kinda don't know what to do, I would use some help.

Write a Stars class. In this class, declare a count field of type int - the number of stars.

Redefine the toString method in the Stars class. It should return the number of stars in the format accepted by the Intergalactic Guild of Spacewalkers.

1000 stars - X character, 100 stars - Y character, 10 stars - Z character, 1 star - *.

A few examples:

1001 stars - X*, 576 stars - YYYYYZZZZZZZ******, The minimum number of characters must be used. That is, for example, 101 stars must be represented as Y*, but not as ZZZZZZZZZZ*.

I made a template, but unfortunately, I don't know how to make all the calculations.

public class Stars {

    int count;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
    
    @Override
    public String toString() {  
        return Integer.toString(count);
    }
    

    public static void main(String[] args) {
        Stars stars = new Stars();
        stars.setCount(2253); // ZZZ***
        System.out.println(stars);
        System.out.println(stars.getCount());
    }
}

I had an idea to create an array of numbers 1000, 100, 10, 1, then count how many of them are used.

Unfortunately, I have no idea how to turn 1000 into X I have no idea, whether 2 in **.

Please check my draft, maybe you can give me some advice or hint. Thank you!

public class Test {

    public static void stars(int amount)
    {
        int[] number = new int[]{ 1000, 100, 10, 1 };
        int[] numberCounter = new int[4];
      
        for (int i = 0; i < 4; i  ) {
            if (amount >= number[i]) {
                numberCounter[i] = amount / number[i];
                amount = amount - numberCounter[i] * number[i];
            }
        }
        for (int i = 0; i < 4; i  ) {
            if (numberCounter[i] != 0) {
                System.out.print(numberCounter[i]);
            }
        }
    }
     
    public static void main(String argc[]){
        int amount = 2253; // should be : XXYYZZZZZ***
        stars(amount);
    }
}
// Or maybe I can use this formula, thank you
//int units = count % 10;
//int tens = (count / 10) % 10;
//int hundreds = (count / 100) % 10;
//int thousands = (count / 100) % 10;

CodePudding user response:

This would work :

 int x = 101;
StringBuilder builder= new StringBuilder();
    while (x>1000) {
        builder.append("X");
        x-=1000;
    }
    while (x<1000&&x>100) {
        builder.append("Y");
        x-=100;
    }
    while (x<100&&x>10) {
        builder.append("Z");
        x-=10;
    }
    while (x<10 && x!=0) {
        builder.append("*");
        x-=1;
    }
        System.out.println(builder.toString());

the point is as long the number of stars is in an interval append a character to the string and then reduce the number.

  • Related