Java-код для отображения цикла

1

Я делаю эту небольшую программу, которая записывает произведенные единицы, вот как это работает

пользователь вводит значение единиц, изготовленных из каждого отдела

Dept 1: 1
Dept 2: 5
Dept 3: 2
Dept 4: 3

Результаты должны быть такими:

Dept 1: *
Dept 2: *****
Dept 3: **
Dept 4: ***

Однако, когда я пробую этот код, который я сделал, он дает мне null значение:

else if(e.getSource()==btnView){
    int num1 = Integer.parseInt(txtdept1.getText());
    int num2 = Integer.parseInt(txtdept2.getText());
    int num3 = Integer.parseInt(txtdept3.getText());
    int num4 = Integer.parseInt(txtdept4.getText());

    for (int i = 0; i < num1; ++i) {
        str += "*";
        txtdept1record.setText(str);
    }

Результат будет следующим:

Dept 1: null*

Это для цикла выше только для dept1.

Теги:

2 ответа

0
Лучший ответ

Оптимизируйте свой цикл как:

for (int i = 0; i < num1; ++i) {
    if( i == 0 ) //i.e. first time
        str = "";            
    str += "*";
}
txtdept1record.setText(str); //outside :-)

Но это не рекомендуется, поэтому используйте StringBuilder

StringBuilder sb = new StringBuilder();
for (int i = 0; i < num1; ++i) {
    sb.append("*");
}
txtdept1record.setText(str); //outside :-)

Ваш (надежный) код:

...
else if(e.getSource()==btnView){
    int num1 = Integer.parseInt(txtdept1.getText());
    int num2 = Integer.parseInt(txtdept2.getText());
    int num3 = Integer.parseInt(txtdept3.getText());
    int num4 = Integer.parseInt(txtdept4.getText());
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < num1; ++i) {
        sb.append("*");
    }
    txtdept1record.setText(sb.toString());

    sb = new StringBuilder(); //empty it.

    //Same thing (i'll show once)

    for (int i = 0; i < num1; ++i) {
        sb.append("*");
    }
    txtdept2record.setText(sb.toString());
    ...
  • 0
    Спасибо за это, это было единственное, чего не хватало, однако вместо того, чтобы иметь такое же количество звездочек, как введенное число, оно несколько удваивается или добавляет к нему одну звездочку.
  • 0
    @AdamJohnTan Да, для этого ... используйте txtdept1record.setText(sb.toString()); наконец: вне петли.
Показать ещё 6 комментариев
0

Начать с String str = "";

Я думаю, что вы определили как эту String str;

  • 0
    Спасибо за это, это было единственное, чего не хватало, однако вместо того, чтобы иметь такое же количество звездочек, как введенное число, оно несколько удваивается или добавляет к нему одну звездочку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню