Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中为下一个while循环存储值的while循环_Java_Loops_While Loop - Fatal编程技术网

在java中为下一个while循环存储值的while循环

在java中为下一个while循环存储值的while循环,java,loops,while-loop,Java,Loops,While Loop,我是Java的初学者。我有一个任务要求我从用户那里获取3个输入,然后同时输出3个。 这是我的密码。我只有一个输出。 假设是这样的: 任何人都可以帮忙,谢谢 这是我的密码 Scanner sc = new Scanner(System.in); int i = 0; String classname = " "; String rating = " "; int plus = 0; while(i < 3){ System.out.print("What

我是Java的初学者。我有一个任务要求我从用户那里获取3个输入,然后同时输出3个。 这是我的密码。我只有一个输出。 假设是这样的:

任何人都可以帮忙,谢谢

这是我的密码

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();
Scanner sc=新扫描仪(System.in);
int i=0;
字符串classname=“”;
字符串评级=”;
整数加等于0;
而(i<3){
System.out.print(“你在给哪个班级评分?”);
classname=sc.nextLine();
System.out.print(““+classname+”得到多少个加号?”);
评级=sc.nextLine();
plus=整数.parseInt(额定值);
i++;
}
System.out.print(classname+“:”);
而(正>0){
系统输出打印(“+”);
加--;
}
System.out.println();

在每个循环中覆盖变量的类名和等级。您需要将每个迭代存储在数组的字段中

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();
}

Scanner sc=新扫描仪(System.in);
int i=0;
String[]classname=新字符串[3]//创建数组
字符串评级=”//评级可以被覆盖,循环后不需要
int[]加上=新的int[3];
而(i<3){
System.out.print(“你在给哪个班级评分?”);
classname[i]=sc.nextLine();//读取/写入数组字段的名称[index]
//索引从0开始
System.out.print(““+classname+”得到多少个加号?”);
评级=sc.nextLine();
加上[i]=整数.parseInt(额定值);
i++;
}
对于(i=0;i=0){
系统输出打印(“+”);
加上[我]——;
}
System.out.println();
}

我要做的第一件事就是创建一个
课程
POJO(普通的旧Java对象)。它应该有两个字段,
name
rating
。我将在
课程
POJO中用
toString
实现显示逻辑。像

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);
    }
}

我们能看看你的B部分节目吗?你能告诉我们你是否知道数组和JavaBean(特别是普通的Java对象)吗?你接受3个输入,但不保存值。退出循环后,只剩下最新的类名和等级,并且只显示最后一组值。如果您希望在完成主循环后转储所有值,而不是在每次迭代中回答问题时立即打印评分,则必须将结果存储在数组或链表中,然后在回答问题后(即退出循环后)创建一个循环检索和解码存储在数组或列表中的值,并显示检索到的一组值的名称和评级。B部分实际上不相关,因为代码完全不同。我刚从助教那里得到一个建议,“与其在每个循环中打印一个“+”,为什么不尝试将它连接到一个字符串,然后在while循环后打印它呢?”你知道他是什么意思吗?@DemonKevin在这个答案中看到了我的
toString
方法。我看到了它,但是我们还没有经历过这个方法,这意味着我不能真正使用它。嗯,这就是助教所说的“将其连接到字符串并在w̶h̶i̶l̶e̶循环后打印”的意思。如果你的意思是
StringBuilder
,那么编写
string sb=”“是一种更有效的方法;对于(inti=0;i
(在内部使用
StringBuilder
,并在每次迭代中创建新的临时字符串)。这确实解决了我的问题。但是我们还没有检查数组,所以我最好不要使用它。
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++;
}