Scanner sc=new Scanner(System.in); while (true) { try { System.out.println("请输入价格"); // String next = sc.next(); // price=Integer.valueOf(next); int number=sc.nextInt(); if (price > 0) { System.out.println("输入成功,价格是" + price); break; } else { System.out.println("请重新输入"); } } catch (Exception e) { e.printStackTrace(); } }
时间: 2024-02-10 09:34:53 浏览: 147
这段代码是一个 Java 程序,它要求用户输入一个价格,如果价格大于 0,则输出输入成功和价格;否则提示用户重新输入。程序使用了一个 while 循环不断接受用户的输入,直到用户输入了大于 0 的价格才跳出循环。在循环内部使用了 try-catch 块来捕获用户输入的异常,如果输入的是非数字字符串,则会输出异常信息。请问你需要我解释什么内容?
相关问题
用java帮我优化下面代码Scanner input = new Scanner(System.in); System.out.println("请输入学生姓名"); String name = input.next(); int number = 0;//录入的成绩 int sum = 0;// 定义变量sum存储总成绩 for (int i = 1; i <= 5; i++) { System.out.print("请输入第" + i + "门课成绩;"); // 判断输入是否合法 while (true) { Scanner sc = new Scanner(System.in); if (sc.hasNextInt()) { number = sc.nextInt(); if (number > 0) { break; } else { System.out.println("输入有误请重新输入"); } } else { System.out.println("输入有误请重新输入"); } }sum+=number; }double sum_1=sum/5; System.out.println(name+"的平均分是"+sum_1); input.close();
可以考虑以下优化:
1. 将多余的Scanner对象去掉,只使用一个Scanner对象即可。
2. 将输入成绩的代码封装成一个方法,减少代码重复。
3. 将输入的学生姓名和成绩放入一个Map中,方便后续处理。
4. 使用try-with-resources语句自动关闭Scanner对象。
优化后的代码如下:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner input = new Scanner(System.in)) {
Map<String, Double> scores = new HashMap<>();
System.out.println("请输入学生姓名");
String name = input.next();
double sum = 0;// 定义变量sum存储总成绩
for (int i = 1; i <= 5; i++) {
int number = inputScore(input, i);// 输入成绩
sum += number;
}
double average = sum / 5;
scores.put(name, average);// 存储成绩
System.out.println(name + "的平均分是" + average);
System.out.println(scores);// 输出成绩
}
}
private static int inputScore(Scanner input, int i) {
int number;
while (true) {
System.out.print("请输入第" + i + "门课成绩:");
if (input.hasNextInt()) {
number = input.nextInt();
if (number > 0) {
break;
} else {
System.out.println("输入有误请重新输入");
}
} else {
System.out.println("输入有误请重新输入");
input.next();// 清除非数字输入
}
}
return number;
}
}
```
Scanner sc1 = new Scanner(System.in); System.out.println("请输入您要查找的序号:"); String num = sc1.nextLine(); judgeSearch jud = new judgeSearch(); try(FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr)){ if(1 == jud.judge(num)){ while (true) { String line = br.readLine(); String[] str = line.split(" ");//分割 if (str[0].equals(num)) { System.out.println(line); break; } } } if(0 == jud.judge(num)){ System.out.println("没有该商品!"); break; }
这段代码的作用是从文件中查找指定序号的商品信息并输出。
首先,通过 Scanner 类从控制台读取用户输入的要查找的商品序号。
然后,通过自定义的 judgeSearch 类的 judge 方法判断该序号是否存在于文件中。
接着,使用 FileReader 和 BufferedReader 读取文件中的每一行数据,并对每行数据进行分割,判断序号是否匹配输入的序号。如果匹配,则输出该行数据并退出循环;如果不匹配,继续循环查找。
最后,如果输入的序号不存在于文件中,则输出提示信息“没有该商品!”。
需要注意的是,该代码可能会抛出 IOException 异常,需要进行异常处理。
阅读全文