Java 仅显示循环中的最终迭代
我已经检查StackOverflow有一段时间了,现在终于到了注册的时候了。我在网站上找不到我的问题,所以我想我会自己问。我已经在下面复制了我的代码。 我这样做是为了学校的作业。它做了它应该做的一切(找到第二个最小的数字),但是,输出不是我想要的。我曾尝试将out.printf语句放在其他地方,但它就是不起作用。首先,前两个数字自动分配给smallestNumber和secondSmallestNumber,分配说明输入的第一个数字应始终小于第二个数字。然后它进入循环并比较所有数字。最后,它应该打印出最后一个最小的数字。但它只是打印所有的。我试过好几种方法,但都做不好。请帮帮我好吗Java 仅显示循环中的最终迭代,java,Java,我已经检查StackOverflow有一段时间了,现在终于到了注册的时候了。我在网站上找不到我的问题,所以我想我会自己问。我已经在下面复制了我的代码。 我这样做是为了学校的作业。它做了它应该做的一切(找到第二个最小的数字),但是,输出不是我想要的。我曾尝试将out.printf语句放在其他地方,但它就是不起作用。首先,前两个数字自动分配给smallestNumber和secondSmallestNumber,分配说明输入的第一个数字应始终小于第二个数字。然后它进入循环并比较所有数字。最后,它应该
EDIT : teaching assistant told me I can't submit my assignments online in the event of fraud. So I'm sorry have to delete this code.
要重复做某件事,您需要将其放入循环中。因此,要想不重复,就把它放在循环之外。要重复做某事,就把它放在循环之内。因此,为了避免重复,请将其置于循环之外。将
移出.printf(“%s%d\n”,“第二个最小的数字是:”,第二个最小的数字)代码>在while循环之外。将移出.printf(“%s%d\n”,“第二个最小的数字是:”,第二个最小的数字)代码>在while循环之外。如其他人所述-您应该将打印移到循环之外。同样,在最后,你会喊出flush
你的printstream
。所以试试这个:
package module2;
import java.io.PrintStream;
import java.util.Scanner;
public class SecondSmallest {
PrintStream out;
SecondSmallest() {
out = new PrintStream(System.out);
}
void start() {
Scanner in = new Scanner(System.in);
out.printf("%s", "Enter multiple numbers divided by a space and close with Enter: ");
int newNumber;
int smallestNumber = in.nextInt();
int secondSmallestNumber = in.nextInt();
while (in.hasNext()) {
newNumber = in.nextInt();
if (newNumber < smallestNumber) {
secondSmallestNumber = smallestNumber;
smallestNumber = newNumber;
}
}
//moved here to print only once
out.printf("%s%d\n", "The second smallest number is : ", secondSmallestNumber);
//flush output stream
out.flush();
}
public static void main(String[] argv) {
new SecondSmallest().start();
}
包模块2;
导入java.io.PrintStream;
导入java.util.Scanner;
公开课第二名{
打印流输出;
第二名(){
out=新的打印流(System.out);
}
void start(){
扫描仪输入=新扫描仪(系统输入);
out.printf(“%s”,“输入多个数字除以一个空格,然后用Enter:”)关闭;
int newNumber;
int smallestNumber=in.nextInt();
int secondSmallestNumber=in.nextInt();
while(在.hasNext()中){
newNumber=in.nextInt();
if(newNumber
正如其他人提到的那样-您应该将打印移到循环之外。最后您还可以呼喊flush
您的printstream
。请尝试以下操作:
package module2;
import java.io.PrintStream;
import java.util.Scanner;
public class SecondSmallest {
PrintStream out;
SecondSmallest() {
out = new PrintStream(System.out);
}
void start() {
Scanner in = new Scanner(System.in);
out.printf("%s", "Enter multiple numbers divided by a space and close with Enter: ");
int newNumber;
int smallestNumber = in.nextInt();
int secondSmallestNumber = in.nextInt();
while (in.hasNext()) {
newNumber = in.nextInt();
if (newNumber < smallestNumber) {
secondSmallestNumber = smallestNumber;
smallestNumber = newNumber;
}
}
//moved here to print only once
out.printf("%s%d\n", "The second smallest number is : ", secondSmallestNumber);
//flush output stream
out.flush();
}
public static void main(String[] argv) {
new SecondSmallest().start();
}
包模块2;
导入java.io.PrintStream;
导入java.util.Scanner;
公开课第二名{
打印流输出;
第二名(){
out=新的打印流(System.out);
}
void start(){
扫描仪输入=新扫描仪(系统输入);
out.printf(“%s”,“输入多个数字除以一个空格,然后用Enter:”)关闭;
int newNumber;
int smallestNumber=in.nextInt();
int secondSmallestNumber=in.nextInt();
while(在.hasNext()中){
newNumber=in.nextInt();
if(newNumber
secondSmallestNumber
是在循环之外定义的,而循环意味着它不限于仅存在于循环中,这意味着您可以在循环之外(即循环之后)打印它的值这会给你预期的结果。它只会打印一次,因为它不会在循环中。我得到了3个相同的答案,虽然我知道你们都在说什么,但它不起作用。你能帮我进一步吗?secondSmallestNumber
是在之外定义的,而循环意味着它不是bounded仅存在于循环中,这意味着您可以在循环之外(即循环之后)打印它的值这会给你预期的结果。它只会打印一次,因为它不会在循环中。我得到了3个相同的答案,虽然我理解你们所说的,但它不起作用。你能帮我进一步吗?问题是控制台什么都没有显示。问题是控制台什么都没有显示你能告诉我确切的位置吗?我试着把它放在几乎每一行上,大多数情况下,控制台在循环之外不提供任何反馈。你能告诉我确切的位置吗?我试着把它放在几乎每一行上,大多数情况下,控制台在循环之外不提供任何反馈谢谢!我会找到flush的功能。但它可以工作edthanks!我会查一查flush是干什么的。但它起作用了