在java中为下一个while循环存储值的while循环
我是Java的初学者。我有一个任务要求我从用户那里获取3个输入,然后同时输出3个。 这是我的密码。我只有一个输出。 假设是这样的: 任何人都可以帮忙,谢谢 这是我的密码在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
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++;
}