- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了摘要未显示的问题。我应该通过添加对象数组来修改以前的 Java 分配。在循环内,实例化每个单独的对象。确保用户无法继续添加超出数组大小的另一个外部转换。 用户从菜单中选择退出后,提示用户是否要显示摘要报告。如果他们选择“Y”,则使用您的对象数组显示以下报告:
Item Conversion Dollars Amount
1 Japanese Yen 100.00 32,000.00
2 Mexican Peso 400.00 56,000.00
3 Canadian Dollar 100.00 156.00
等等
转化次数 = 3
编译时没有错误..但是当我运行程序时一切都很好,直到我点击 0 结束转换并让它询问我是否想查看摘要。此错误显示:
线程“main”中出现异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 在 java.lang.String.charAt(String.java:658) 在 Lab8.main(Lab8.java:43)
我的代码:
import java.util.Scanner;
import java.text.DecimalFormat;
public class Lab8
{
public static void main(String[] args)
{
final int Max = 10;
String a;
char summary;
int c = 0;
Foreign[] Exchange = new Foreign[Max];
Scanner Keyboard = new Scanner(System.in);
Foreign.opening();
do
{
Exchange[c] = new Foreign();
Exchange[c].getchoice();
Exchange[c].dollars();
Exchange[c].amount();
Exchange[c].vertical();
System.out.println("\n" + Exchange[c]);
c++;
System.out.println("\n" + "Please select 1 through 4, or 0 to quit" + >"\n");
c= Keyboard.nextInt();
}
while (c != 0);
System.out.print("\nWould you like a summary of your conversions? (Y/N): ");
a = Keyboard.nextLine();
summary = a.charAt(0);
summary = Character.toUpperCase(summary);
if (summary == 'Y')
{
System.out.println("\nCountry\t\tRate\t\tDollars\t\tAmount");
System.out.println("========\t\t=======\t\t=======\t\t=========");
for (int i=0; i < Exchange.length; i++)
System.out.println(Exchange[i]);
Foreign.counter();
}
}
}
我查看了第 43 行及其这一行:summary = a.charAt(0);
但是我不知道哪里出了问题,有人可以指出吗?谢谢。
最佳答案
问题不完全在于该行,而是在于前一个 while 的最后一行。您已使用以下方式读取了 int
: -
c= Keyboard.nextInt();
如果您看到 Scanner#nextInt
的文档方法,它从用户输入中读取下一个标记。因此,当您传递整数值时,Keyboard.nextInt 不会读取末尾的
,然后剩下的内容将由以下人员读取:-linefeed
(由于您按 enter
键而传递的结果)
a = Keyboard.nextLine();
while
退出后。因此,基本上这个语句是读取前面的 Keyboard.nextInt
调用留下的换行符,因此 a
包含一个 empty
字符串,其中包含换行符
在末尾。因此你会得到Exception
。
解决方法:-
您可以在此语句之前触发一个空的Keyboard.nextLine
,这将消耗换行
作为其输入,以便您的下一个用户输入在其之后开始。
// Your code before this while
} while (c != 0);
Keyboard.nextLine(); // Add this line before the next line
System.out.print("\nWould you like a summary of your conversions? (Y/N): ");
a = Keyboard.nextLine();
<小时/>
或者,另一种方法是您也可以使用Keyboard.nextLine
来读取整数值。然后使用 Integer.parseInt 方法将其转换为整数。但要小心,您必须进行一些异常处理。因此,如果您仍在研究异常处理
,那么您可以采用第一种方法。因此,在您的 do-while
中,您可以这样做:-
try {
c = Integer.parseInt(Keyboard.nextLine());
} catch (NumberFormatException e) {
e.printStackTrace();
}
关于java - stringindexoutofbounds 与货币转换器java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13205990/
我试图编写一个程序,它从用户那里获取一个字符串,并告诉用户该字符串中小写字母、大写字母、空格等的数量。但我收到一条错误消息:StringIndexOutOfBound。 public class Ch
这是我的代码: public static String removeAdjDuplicates(String s) { if(s == "" || s == null || s.isEm
现在正在做我的 AP 计算机科学作业,但我遇到了运行时错误。有谁知道我的代码有什么问题吗?该程序在 Dr.Java 上运行良好,但在我的网站测试器上显示运行时错误... class Main{ pu
我遇到了摘要未显示的问题。我应该通过添加对象数组来修改以前的 Java 分配。在循环内,实例化每个单独的对象。确保用户无法继续添加超出数组大小的另一个外部转换。 用户从菜单中选择退出后,提示用户是否要
public String delDel(String str) { if (str.length() value.length) { throw new StringIndex
import java.util.Scanner; public class s { public static void main(String[] args) {
我正在做一些在线编码项目,试图学习编程并提高我的技能。当前项目的目标是首先找出二进制中哪个以 2 为基数的数字与另一个数字匹配。我可能没有正确解释这一点。 例如,如果我的二进制字符串为 10010 和
我这里有两个完全相同的代码副本,除了一个在 for 循环中有“<”而另一个有“<=”。有人能解释一下为什么我在使用“<=”时会出现索引越界异常,但随后它可以与“<” 一起正常工作吗 错误代码: for
我正在编写一个程序来计算: 1^1 + 2^2 + 3^3 + ... + 1000^1000 = ? 一旦它计算出来,我想删除答案中除最后十位数字之外的所有数字,然后在屏幕上打印最后十位数字。要删除
import java.io.*; public class runner{ //Translates from infix to postfix //Evaluates the postfix ex
通过运行一个在远程服务器上运行命令的简单代码,如下: if (s.contains("CONNECTED") || s.endsWith("Enter command: ") || s.endsWit
在我的代码中,我有一个 while 循环,其中嵌套了 3 个 IF 测试,这些测试具有由 ELSE 触发的标志: [test1]检查输入值的长度是否正好为1[防止用户不输入任何内容] [test2]
有人可以帮我吗,我编写了这个应用程序,但它不起作用,而且我找不到解决方案。 第一个错误:由 java.lang.IllegalStateException 引起:无法执行 Activity 的方法 第
我有一个程序,它接受两个字符串参数,并根据它们的索引将它们视为 int,并尝试像我们在纸上所做的那样进行加法,但我收到 java.lang.StringOutOfBounds Exception ,我
我在这部分代码中遇到 StringIndexOutOfBounds 异常。 捕获 myList 的字段在 UI 中是可选的。只有当 myList/myURL 字符串为空时才会出现此错误。我该如何处理?
这是一个非常简单的代码块,使用 jre 1.6 运行时环境并在 64 位服务器 Server 2008 R2 中运行: .... cntr = 0; while (cnt
我是一名优秀的程序员,十分优秀!