while和do whole的区别
时间: 2023-11-10 09:42:46 浏览: 29
while和do-while都是循环语句,但在使用上有一些区别。while语句先判断条件是否成立,如果成立则执行循环语句块中的语句,若不成立,则跳出循环。而do-while语句先执行一次循环语句块中的语句,然后再进行条件判断,如果条件成立则继续执行,不成立则跳出循环。因此,do-while至少会执行一次循环语句块中的语句,而while则不一定会执行循环语句块中的语句。
相关问题
After reading the integer and the newline character (which is just ignored), the readPosInt method tests the integer. If the integer is bigger than or equal to zero, then the readPosInt method returns the integer as result. If the integer is strictly less than zero, then the readPosInt method uses System.out.println to print the error message "Positive integers only!" to the user (use System.out.println for this, not System.err.println, otherwise you might hit a bug in Eclipse...), and then does the whole thing again (including printing again the string argument of the readPosInt method) to try to read an integer again (hint: just print the error message, and then the while loop you already have around the whole code will automatically do the whole thing again...)接上面的代码
这段代码可能是一个方法的实现,名为readPosInt。根据你的描述,这个方法读取用户输入的整数,如果这个整数为非负数,则直接返回这个整数;否则,向用户输出“Positive integers only!”的错误提示信息,然后重新读取整数。这个过程会一直重复,直到读取到一个非负整数为止。
以下是可能的readPosInt方法的实现:
```
public static int readPosInt(String prompt) {
Scanner scanner = new Scanner(System.in);
int num;
do {
System.out.print(prompt);
num = scanner.nextInt();
if (num < 0) {
System.out.println("Positive integers only!");
}
} while (num < 0);
return num;
}
```
注:这个实现假设用户输入的是合法的整数,如果用户输入非整数或超出int类型的取值范围,会抛出异常。为了让程序更健壮,可以加上对这些异常的处理。
If the user types something which is not an integer, then the nextInt method of the scanner will throw an InputMismatchException. In that case the code of your readPosInt method must catch the exception, use System.out.println to print the error message "You must type an integer!" to the user (use System.out.println for this, not System.err.println, otherwise you might hit a bug in Eclipse...), use the scanner’s nextLine method to read (and ignore) the wrong input typed by the user of the program (if you do not do this, the wrong input typed by the user will remain in the input stream, and the next time you call the nextInt method again, you will get an InputMismatchException again!), and then do the whole thing again (including printing again the string argument of the readPosInt method) to try to read an integer again (hint: put the whole code of the method inside a while loop).java代码
Sure, I understand your question. Here's a possible implementation of the `readPosInt` method in Java that handles the scenario you described:
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n = readPosInt("Please enter a positive integer: ");
System.out.println("You entered: " + n);
}
public static int readPosInt(String prompt) {
Scanner scanner = new Scanner(System.in);
int n = 0;
boolean success = false;
while (!success) {
System.out.print(prompt);
try {
n = scanner.nextInt();
if (n > 0) {
success = true;
} else {
System.out.println("You must type a positive integer!");
}
} catch (InputMismatchException e) {
System.out.println("You must type an integer!");
scanner.nextLine(); // consume wrong input
}
}
return n;
}
}
```
In this implementation, we use a `while` loop to keep trying to read an integer until we succeed. Inside the loop, we print the prompt and attempt to read an integer using `scanner.nextInt()`. If this call throws an `InputMismatchException`, we catch it and print the error message "You must type an integer!" to the user using `System.out.println()`. We also use `scanner.nextLine()` to consume the wrong input typed by the user, so that the input stream is properly cleared and the next call to `scanner.nextInt()` doesn't fail again.
If the input is an integer, we check if it's positive and set the `success` flag to `true` if it is. If the input is not positive, we print the error message "You must type a positive integer!" to the user using `System.out.println()`.
Finally, if we succeed in reading a positive integer, we return it from the method.
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)