Java 从用户获取字符输入时的IndexOutOfBoundsException
在第15行中,ch=s1.charAt0;, 为什么ch没有得到s1的第0个字,即操作符 我尝试过不使用try-catch方法,但是错误是关于异常的 现在没有例外,没有错误,但程序不要求操作员直接输入 第一个和第二个值,它显示异常不能这样做 请发表您的友好回复,谢谢Java 从用户获取字符输入时的IndexOutOfBoundsException,java,exception,charat,Java,Exception,Charat,在第15行中,ch=s1.charAt0;, 为什么ch没有得到s1的第0个字,即操作符 我尝试过不使用try-catch方法,但是错误是关于异常的 现在没有例外,没有错误,但程序不要求操作员直接输入 第一个和第二个值,它显示异常不能这样做 请发表您的友好回复,谢谢 import java.util.Scanner; class apples { public static void calcu() { try{ int a, b;
import java.util.Scanner;
class apples {
public static void calcu() {
try{
int a, b;
String s1;
char ch;
Scanner sc = new Scanner(System.in);
System.out.print("Enter the 1st value : ");
a = sc.nextInt();
System.out.print("Enter the 2nd value : ");
b = sc.nextInt();
System.out.print("Enter the operator : ");
s1 = sc.nextLine();
ch = s1.charAt(0);
System.out.println("yo");
switch(ch){
case '+' : System.out.print("sum is " + (a+b));
case '-' : System.out.print("Substraction is : " +(a-b));
case '*' : System.out.print("Multiplication is : " + (a*b));
case '/' : System.out.print("Multiplication is : " + (a/b));
default : System.out.print("wtf yo");
}
}
catch(Exception e) {
System.out.println("cant do that ");
}
}
public static void main(String args[]) {
apples obj = new apples();
obj.calcu();
}
}
您应将nextLine替换为nextLine:
当s1=sc.nextLine时;在b=sc.nextInt之后,它返回一个空字符串,因为它返回包含该int的行的结尾。当您尝试获取空字符串的第一个字符时,您会得到一个IndexOutOfBoundsException。我们不知道您的输入是什么,也不知道您的预期输出是什么。事实上,你没有费心去记录异常是什么也没有帮助。。。请在您的日志中包含异常详细信息,例如System.out.printlnError:+e;先生,我只是在做一个普通的计算器,并且正在学习如何输入字符变量,虽然它不能帮助我们诊断问题-它不能告诉我们您输入了什么,或者关于异常的任何信息。可能重复的hmm。。。谢谢,先生,你能告诉我,parseInt方法属于哪一类吗?我在哪里可以学习它?顺便说一句,parseInt方法属于哪一类,先生?@takatsigh你说属于哪一类是什么意思?它是Integer类的静态方法。
System.out.print("Enter the 1st value : ");
a = Integer.parseInt(sc.nextLine());
System.out.print("Enter the 2nd value : ");
b = Integer.parseInt(sc.nextLine());
System.out.print("Enter the operator : ");
s1 = sc.nextLine();
ch = s1.charAt(0);