в то время как l oop с сохранением значения для следующего, в то время как l oop в java - PullRequest
0 голосов
/ 17 февраля 2020

Я новичок в Java. У меня есть задание, которое требует от меня 3 ввода от пользователя, а затем вывести 3 одновременно. вот мой код у меня есть только 1 выход. предположим, что это выглядит так:

example любой может помочь, спасибо!

вот мой код

Scanner sc = new Scanner(System.in);

  int i = 0;
  String classname = " ";
  String rating = " ";
  int plus = 0;


  while(i < 3){
    System.out.print("What class are you rating? ");
    classname = sc.nextLine();

    System.out.print("How many plus signs does " + classname +" get? ");
    rating = sc.nextLine();
    plus = Integer.parseInt(rating);

    i++;
  }
    System.out.print(classname + ": ");

    while (plus > 0){
      System.out.print("+");
      plus --;
    }
    System.out.println();

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Самое первое, что я хотел бы сделать, это создать Course POJO (Простой Старый Java Объект). У него должно быть два поля, name и rating. И я бы реализовал отображение логики c с toString в этом Course POJO. Например,

public class Course {
    private String name;
    private int rating;

    public Course(String name, int rating) {
        this.name = name;
        this.rating = rating;
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < rating; i++) {
            sb.append("+");
        }
        return String.format("%s: %s", name, sb);
    }
}

Тогда ваш метод main просто включает заполнение одного массива из трех Course экземпляров в одном l oop и отображение их во втором l oop. Мол,

Scanner sc = new Scanner(System.in);
Course[] courses = new Course[3];
int i = 0;
while (i < courses.length) {
    System.out.print("What class are you rating? ");
    String className = sc.nextLine();
    System.out.printf("How many plus signs does %s get? ", className);
    int classRating = Integer.parseInt(sc.nextLine());
    courses[i] = new Course(className, classRating);
    i++;
}
i = 0;
while (i < courses.length) {
    System.out.println(courses[i]);
    i++;
}
0 голосов
/ 17 февраля 2020

Вы перезаписываете свои переменные имя класса и рейтинг в каждом l oop. Вам нужно хранить каждую итерацию в поле массива.

Scanner sc = new Scanner(System.in);

  int i = 0;
  String[] classname = new String[3]; //create array
  String rating = " "; //rating can be overwritten, it is not needed after the loop
  int[] plus = new int[3];


  while(i < 3){
    System.out.print("What class are you rating? ");
    classname[i] = sc.nextLine(); //name[index] to read/write fields of an array
                                  //index starts at 0 

    System.out.print("How many plus signs does " + classname +" get? ");
    rating = sc.nextLine();
    plus[i] = Integer.parseInt(rating);

    i++;
  }
for(i = 0;i<3;i++){ //iterate over all elements in the array
    System.out.print(classname[i] + ": ");

    while (plus[i] > 0){
      System.out.print("+");
      plus[i] --;
    }
    System.out.println();
}

...