帮我检查以下代码Import java.util.InputMismatchException; import java.util.Scanner; public class CLI { private static Scanner input = new Scanner(System.in); private static String readLine(String str1) { String str1 = input.nextLine(); System.out.print("Type some text:"); return str1; } private static int readPosInt(String str2) { while(true) { System.out.print("Type some integer:"); int i=input.nextInt(); /*if(i<0) { throw new InputMismatchException("You must type an integer!"); }*/ while(true) { try { i= input.nextInt(); System.out.println("i:"+i); break; }catch(InputMismatchException e){ System.out.println("You must type an integer!"); input.nextLine(); } } if(i>0||i==0) { return i; }else { System.out.println("Positive intefers only!"); } } } public static void main(String[] args) { String str1 = readLine("Type some text: "); System.out.println("Text read is: " + str1); int i = readPosInt("Type an integer: ");
时间: 2023-12-03 17:46:15 浏览: 80
在readLine方法中,你定义了一个String类型的参数str1,但是在方法内部又重新定义了一个同名的变量,这会导致编译错误。你可以将方法内部的变量名改为其他名称。例如:
```
private static String readLine(String prompt) {
System.out.print(prompt);
String str = input.nextLine();
return str;
}
```
在readPosInt方法中,你在while循环外部定义了一个变量i,然后在while循环内部又重新定义了一个同名的变量。这会导致逻辑错误。你可以将while循环内部的变量改为其他名称。例如:
```
private static int readPosInt(String prompt) {
while(true) {
System.out.print(prompt);
int i;
while(true) {
try {
i = input.nextInt();
System.out.println("i: " + i);
break;
}catch(InputMismatchException e){
System.out.println("You must type an integer!");
input.nextLine();
}
}
if(i>=0) {
return i;
}else {
System.out.println("Positive integers only!");
}
}
}
```
这样修改后,代码就不会有编译错误和逻辑错误了。
阅读全文