我有麻烦总结没有出现。我应该通过添加一组对象来修改以前的Java任务。在循环中,实例化每个单独的对象。确保用户无法继续添加超出数组大小的其他外部转换。 用户从菜单中选择退出后,提示用户是否要显示摘要报告。如果他们选择“Y”,那么,使用对象数组,显示以下报告:stringindexoutofbounds与货币换算的Java程序
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结束转换并询问是否想要查看摘要才是正确的。此错误显示:
异常在线程 “主” 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和它的这一行:摘要= a.charAt(0);
但我不确定它有什么问题,任何人都可以指出它?谢谢。
那么,你有什么尝试?显然,当你到达第43行时,字符串“a”是一个空字符串。你输入了一个空行吗? – Isaac
?像刚刚按下输入? – mzzzzb
只是对风格发表评论:我鼓励你遵循Java Code Coventions(http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html)......特别是:'thisIsararNameName '和'ThisIsAClassName' ...我也使'MAX_EXCHANGES'常量而不是本地'Max'变量。 – corlettk