[英]Java array not functioning properly?
import java.util.Scanner;
public class Maintest {
static Scanner kb = new Scanner(System.in);
public static void main (String args[]) {
System.out.println("This is how you should format your equation => 3.0 x + 5.5 y = 9.0");
System.out.println("Type your first equation:");
String first = kb.nextLine();
//first equation
Scanner one = new Scanner(first);
//scanner for first
double[] arr = new double[6];
//arr containing numbers
String[] vars = new String[2];
//arr containing variable names
System.out.println("Type your second equation:");
String second = kb.nextLine();
//second equations
Scanner two = new Scanner(second);
//scanner for second
one.useDelimiter("[^\\p{Alnum},\\.-]");
two.useDelimiter("[^\\p{Alnum},\\.-]");
//anything other than alphanumberic characters,
//comma, dot or negative sign is skipped
for (int i = 1; i <= 3; i++) {
if (one.hasNextDouble())
arr[i-1] = one.nextDouble();
else if (one.hasNext())
vars[i-1] = one.next();
else if (two.hasNextDouble())
arr[i+2] = one.nextDouble();
else if (arr[i-1] == 0.0)
arr[i-1] = 1.0;
//putting values into array
}
System.out.println(arr[3]);
System.out.println(vars[2]);
}
}
我想知道我的代码有什么问题。 本来可以求解线性方程组,但是现在,我正在努力从人们将要键入的方程中获取值。我期望它可以打印出我告诉它的数组特定索引的值进行打印(即arr [3]和vars [2]),但它显示java.lang.ArrayIndexOutOfBoundsException:2.请您提供帮助,并可能告诉我我的错误吗? 哦,我想知道一种更有效的方法来完成相同数量的代码,即使用户只键入3x + 4.5y = 15而没有所有不必要的空格或.0的情况下,我也想知道。 谢谢您的帮助!
如您所见, vars
是一个大小为2的数组:
String[] vars = new String[2];
由于Java从零开始索引,这意味着该数组为两个字符串提供了“空间”: vars[0]
和vars[1]
。 超出此限制的所有内容,这就是为什么您会收到错误消息的原因:
System.out.println(vars[2]); //vars[2] would be the third String, but vars's length is only two!
您还应该确保在print语句之前的循环中不要尝试访问vars[2]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.