指出报错 public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String a=in.nextLine(); String[] split = a.split("."); String s = split[0]; System.out.println(s); } }
时间: 2024-02-14 18:08:00 浏览: 23
这段代码可能会出现数组越界异常(ArrayIndexOutOfBoundsException)的报错。原因在于 `split()` 方法使用的是正则表达式,而点号 `.` 在正则表达式中是特殊字符,需要进行转义,即改为 `split("\\.")`。因此,正确的代码应该是:
```
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String a = in.nextLine();
String[] split = a.split("\\.");
String s = split[0];
System.out.println(s);
}
}
```
相关问题
import java.util.*; public class Test01 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); List<Integer> list=new ArrayList<>(); for(int i=0;i<list.size();i++) list.add(scanner.nextInt()); Collections.sort(list); Collections.reverse(list); Iterator iterator=new list.iterator(); while (iterator.hasNext()) System.out.println(iterator.next()+" "); } }
在你的修正后的代码中,你已经正确导入了`java.util.*`,包括`java.util.Collections`。但是,在使用`Iterator`遍历列表时,你在`new list.iterator()`这行代码中出现了一个小错误。
你应该使用`new ArrayList<>()`而不是`new list.iterator()`来创建一个迭代器。在Java中,你需要通过调用`iterator()`方法来获取集合(如ArrayList)的迭代器。
以下是修正后的代码示例:
```java
import java.util.*;
public class Test01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<>();
for(int i = 0; i < list.size(); i++)
list.add(scanner.nextInt());
Collections.sort(list);
Collections.reverse(list);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext())
System.out.println(iterator.next() + " ");
}
}
```
修复了这个错误后,你应该能够正确地对列表进行排序并逆序输出。请确保在读取输入值之前确定列表的大小,以避免列表始终为空。
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); } }为什么输入不结束没有输出
这段代码的逻辑是不断从标准输入中读取浮点数,将它们的和累加到sum变量中,直到读取结束。输入不结束可能是因为Scanner对象没有收到输入流的结束信号。如果你是在命令行中运行该程序,可以通过键入Ctrl+Z(Windows)或Ctrl+D(Linux/Mac)来发送结束信号,程序会终止并输出sum变量的值。如果你是在IDE中运行该程序,可能需要手动停止程序的运行。