我试图计算存储在数组中的值,这是我的代码:
public void printScores()
{
String sep = ":";
File inputfile = new File ("P:/SD/Assignment1/fbScores.txt");
String [] stringArr;
String line = "";
try {
Scanner filescan = new Scanner(inputfile);
while(filescan.hasNext())
{
line = filescan.nextLine();
stringArr = line.split(sep);
if(stringArr.length == 4)
{
System.out.println(stringArr[0]+"\t [" +stringArr[2]+"]\t|" + stringArr[1]+"\t["+ stringArr[3]+" ]\n");
}
else
{
throw new IllegalArgumentException("String " + line + " does not contain " + sep);
}
}
filescan.close();
}
catch (FileNotFoundException e)
{
System.out.println("problem " +e.getMessage());
}
}
public void totalGoals()
{
int count;
for (int i = 0; i<stringArr.length; i++)
{
//int num[i] = Integer.parseInt(stringArr);
}
}
}
基本上,我只想添加存储在[2]和[3]中的数字,我底部的totalGoals方法是我开始的地方,但无法弄清楚如何从字符串更改为整数,有什么帮助将不胜感激!
更新:
公共无效的totalGoals()
{
int[] num = new int[stringArr.length];
int count = 0;
for (int i = 0; i<stringArr.length; i++)
{
num[i] = Integer.parseInt(stringArr[i]);
count = count + num[i];
System.out.println(count);
}
}
最佳答案
您想单独解析每个字符串-您似乎正在尝试处理整个数组
int[] num = new int[stringArr.length]; //don't forget to declare your num[] array
for (int i = 0; i<stringArr.length; i++)
{
num[i] = Integer.parseInt(stringArr[i]); // stringArr[i] instead of stringArr
}
请注意,当您将代码拆分为
for loop
格式时,该代码实际上在做什么。int[] num = new int[4];
num[0] = Integer.parseInt(stringArr[0]); //the for loop is starting at 0 and stopping
num[1] = Integer.parseInt(stringArr[1]); //when it hits 4
num[2] = Integer.parseInt(stringArr[2]);
num[3] = Integer.parseInt(stringArr[3]);
实际上,您只需要
2
和3
..而您要做的就是将它们加在一起。您已经有一个count
变量,可以代替num
假设您只想遍历2和3 ...看一下
for loop
for (int i = 0; i < stringArr.length; i++)
int i = 0 //your loop is starting at 0
i < stringArr.length; //its ending when i is the array's length (should be 4 judging by your other code)
i++ // i increases by 1 at the end of each time through
因此,如果
0
和1
没有用,请尝试使用int i = 2
您有一个
count
变量。也许它应该从0开始。而不是设置num
变量,您可以将值添加到您的count
变量中。关于你的方法..它本身应该起作用。
我也不确定哪一行是
line 73
如果它是第一行:
int[] num = new int[stringArr.length];
那么您的stringArr
不存在(对于此方法)或您的stringArr
未初始化(对于该方法再次)查看您显示给我的代码,我猜问题出在第一行。
public void printScores() {
//other code
String[] stringArr;
//other code
}
public void totalGoals() {
int[] num = new int[stringArr.length];
int count = 0;
for (int i = 0; i<stringArr.length; i++)
{
num[i] = Integer.parseInt(stringArr[i]);
count = count + num[i];
System.out.println(count);
}
}
如此简单地完成,您甚至将无法编译。
stringArr
将不存在totalGoals
。这两种方法是分开的,无法“看到”彼此的变量。如果您的代码如下所示,那么您将声明stringArr两次,并且有两个单独的变量命名相同!
{
String[] stringArr; //This is what totalGoals would be using - it is never assigned
public void printScores() {
String[] stringArr; //This one is used and assigned within printScores
//but totalGoals cannot see/use it
}
public void totalGoals() {
}
}
关于java - 将数组元素从字符串转换为整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26805873/