所以我会给你一些简短的背景,我是AP计算机科学,我对这个程序很困惑。
我们假设输入数组的大小,然后程序运行for循环,在一个字符串中获取全名,(使用scanner.nextLine();
),然后是测试分数,这不是那很重要然后,用户将输入ANYONE的第一个名称,并且应该有一个for循环遍历每个数组,看看firstName是否在第一个名称数组中。
打印出来的问题是firstName是空白的..修复了第一个错误。
import java.util.Scanner;
public class totalScores {
public static void main(String[]args){
Scanner input = new Scanner(System.in);
System.out.println("Enter the size of the array: ");
int sizeOfArray = input.nextInt();
String kline[] = new String[sizeOfArray];
for ( int index= 0; index< kline.length; index++)
{
System.out.println("Enter the name: ");
String name = input.next();
kline[index]= name;
input.nextLine();
}
double[] testScore= new double[sizeOfArray];
for (int i = 0; i< testScore.length; i++)
{
System.out.println("enter the test score");
double testz = input.nextDouble();
testScore[i]= testz;
input.nextLine();
}
System.out.println("Enter first name : ");
String want = input.next();
for( int index = 0; index < kline.length; index++)
{
String firstName="";
String namez;
namez = kline[index];
int space = namez.indexOf("");
firstName = namez.substring(0,space);
if (want.equalsIgnoreCase(firstName))
{
System.out.println("The test score is: "+ testScore[index]);
}
else
{
System.exit(0);
}
}
}
}
答案 0 :(得分:0)
你的例子不太清楚但是我可以看到for循环以kline.length作为限制运行,但是你得到了nameofarray [index],它可能是一个大小不同于kline的数组。
答案 1 :(得分:0)
问题可能就在这里:
int space = namez.indexOf(" ");
如果namez
中不包含空格,space
的值将为-1
。所以它将形成这个声明:
namez.substring(0, -1)
当然你会遇到异常。
答案 2 :(得分:0)
尝试这样做:
String firstName = kline[index].split(" ")[0];
System.out.println(firstName);
这将返回kline[index]
的第一个单词,即使它不包含空格。
错误的发生很可能是因为kline[index]
不包含空格(因此,indexOf(" ")
会返回-1。而 cant 子串与(0,-1)