public class shopping { public static void main(String args[]) { Scanner sc = new Scanner(System.in); sc.useDelimiter("[^0-9.]+"); double sum = 0; while(sc.hasNext()) { double price = sc.nextDouble(); sum = sum + price; } System.out.println(sum); } }为什么输入不结束没有输出
时间: 2024-04-21 13:30:12 浏览: 46
这段代码的逻辑是不断从标准输入中读取浮点数,将它们的和累加到sum变量中,直到读取结束。输入不结束可能是因为Scanner对象没有收到输入流的结束信号。如果你是在命令行中运行该程序,可以通过键入Ctrl+Z(Windows)或Ctrl+D(Linux/Mac)来发送结束信号,程序会终止并输出sum变量的值。如果你是在IDE中运行该程序,可能需要手动停止程序的运行。
相关问题
public class shopping { public static void main(String args[]) { Scanner sc = new Scanner(System.in); sc.useDelimiter("[^0-9.]+"); double sum = 0; while(sc.hasNext()) { double price = sc.nextDouble(); sum = sum + price; }sc.close(); System.out.println(sum); } }为什么输入不结束没有输出
该代码中,Scanner对象在使用完毕后应该被关闭,以释放与其相关的资源。如果没有关闭Scanner对象,可能会导致程序无法正常结束。你可以在while循环结束后,调用`sc.close()`方法来关闭Scanner对象。这样可以保证程序能够正常结束并输出sum变量的值。如果你仍然没有看到输出,可能是因为输入流中没有任何数据,可以尝试输入一些浮点数并以Ctrl+Z(Windows)或Ctrl+D(Linux/Mac)结束输入。
package sy5; import java.util.*; public class Main { public static void main(String args[]) { String st; Scanner sc=new Scanner(System.in); st=sc.nextLine(); int i; String x[]=st.split(";"); for(i=0;i<st.length();i++) { System.out.print(x[i]+"\n"); } Scanner sc1=new Scanner(st); sc1.useDelimiter("[0123456789]+"); int sum=0; while(sc1.hasNext()) { try { int y=sc1.nextInt(); sum=sum+y; } catch(InputMismatchException exp) { String t=sc1.next(); } } System.out.println(sum); } }修改以下代码
这段代码存在一些问题,我给您修改并注释如下:
```java
package sy5;
import java.util.*;
public class Main {
public static void main(String args[]) {
String st;
Scanner sc=new Scanner(System.in);
st=sc.nextLine();
String x[]=st.split(";"); // 分号应该用中文输入法输入
for(int i=0;i<x.length;i++) { // 循环次数应该是数组长度
System.out.print(x[i]+"\n");
}
Scanner sc1=new Scanner(st);
sc1.useDelimiter("[0123456789]+");
int sum=0;
while(sc1.hasNext()) {
try {
int y=sc1.nextInt();
sum=sum+y;
}
catch(InputMismatchException exp) {
String t=sc1.next();
}
}
System.out.println(sum);
}
}
```
修改的主要问题有:
1. 循环次数应该是数组长度而不是字符串长度;
2. 分号应该用中文输入法输入;
3. 变量的定义在使用之前;
4. 没有捕获异常时应该去掉 catch 块中的语句。
阅读全文