java - 有没有办法使用 .hasNext 以外的其他方法编写这个程序?
问题描述
编写一个程序,要求用户输入一个字符串。然后要求用户输入一个索引值(整数)。您将使用字符串类中的 charAt() 方法来查找并输出该索引所引用的字符。允许用户重复这些操作,方法是把它放在一个循环中,直到用户给你一个空字符串。现在意识到,如果我们使用错误值(负值或大于字符串大小的整数)调用 charAt 方法,则会引发异常。添加代码以捕获此异常,输出警告消息,然后继续循环
import java.util.Scanner;
class Main
{
public static void main(String[] args)
{
System.out.println("");
String s;
int ind;
Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
s=sc.next();
if(s.length()==0)
break;
ind=sc.nextInt();
try {
char ch=s.charAt(ind);
System.out.println("Character is "+ch);
}
catch(Exception e) {
System.out.println("Bad index Error!");
}
}
}
}
解决方案
是的。您可以依靠分配评估分配的值。另外,打电话Scanner.hasNextInt()
前打电话Scanner.nextInt()
。喜欢,
System.out.println();
String s;
Scanner sc = new Scanner(System.in);
while (sc.hasNext() && !(s = sc.next()).isEmpty()) {
if (sc.hasNextInt()) {
int ind = sc.nextInt();
try {
char ch = s.charAt(ind);
System.out.println("Character is " + ch);
} catch (Exception e) {
System.out.println("Bad index Error!");
}
}
}
推荐阅读
- elasticsearch - 使用 EKL Stack 将两列合二为一
- mysql - 导出具有多列的 SQL 数据库时如何将 NULL 设置为另一个值?
- php - Magento 2:如何在结帐时加载另一个客户数据,而不是通过自定义模块加载当前登录的客户?
- logstash - 如何构建用于条件匹配的logstash过滤器?
- algorithm - IDA* 是否与使用启发式函数的 IDS 相同?
- python - 了解本地运行与从 PyPI 安装时导入的差异
- django - 如何在 django url 开头使用变量返回查看?
- compiler-construction - 如何知道层数减少的规则编号?
- domain-driven-design - DDD 域与聚合
- c# - 文件更改时在派生类中调用函数