Java 为什么Arraylist不';我不接受它';谁有自己的方法?
我有一个程序,我想打印一所学校每个学生的平均科目 输入应该是这样的Java 为什么Arraylist不';我不接受它';谁有自己的方法?,java,string,arraylist,methods,Java,String,Arraylist,Methods,我有一个程序,我想打印一所学校每个学生的平均科目 输入应该是这样的 000555 maths 88.7 physics 55.6 end “End”是一个关键字,表示学生的输入数据已终止。只要有人停止输入,程序就会终止 我将用户输入的所有等级存储在ArrayList中。但是,当我运行该程序时,会收到以下错误消息: error: no suitable method found for add(String) (grades.add(str)) method Collection.add(Fl
000555 maths 88.7 physics 55.6 end
“End”是一个关键字,表示学生的输入数据已终止。只要有人停止输入,程序就会终止
我将用户输入的所有等级存储在ArrayList中。但是,当我运行该程序时,会收到以下错误消息:
error: no suitable method found for add(String) (grades.add(str))
method Collection.add(Float) is not applicable
(argument mismatch; String cannot be converted to float)
error: no suitable method found for set(String) (grades.set(str))
etc...
我知道我不能直接将字符串转换为浮点,但我尝试了所有方法,但仍然不起作用。为了让编译器接受这些方法,我应该做什么
我的代码如下:
import java.util.Scanner;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Student
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
String currentAnswer = "";
String userWords = "";
ArrayList<Float> grades = new ArrayList<Float>();
System.out.println("Enter your a.m. as well as the subjects which you sat in finals");
while(!currentAnswer.equals("end"))
{
currentAnswer = s.nextLine(); // reads the number or word
userWords += "\n" + currentAnswer ;
if(currentAnswer.equals("000000"))
{
System.out.println("The sequence of numbers you entered is: "+userWords);
System.out.println("Exiting...");
System.exit(0);
}
String[] wordsplit = currentAnswer.split(" ");
String pattern = "^\\d+$";
Pattern p = Pattern.compile("\\d+");
stud.clear();
grades.clear();
for (String str : wordsplit)
{
Matcher m = p.matcher(str);
if(str.matches("^\\d+$")){
String name = new String(str);
System.out.println("Code is: "+str);}
if(m.find()){
grades.add(str);
System.out.println("The numbers are: "+str);}
}
grades.set(0,0);
float sum = 0;
for( float i : grades)
{
sum+= i;
}
float avg = sum / grades.size();
System.out.println("The average of student "+name+" is "+avg);
} //while
}//main
}//class
import java.util.Scanner;
导入java.util.ArrayList;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公立班学生
{
公共静态void main(字符串[]args)
{
扫描仪s=新的扫描仪(System.in);
字符串currentAnswer=“”;
字符串userWords=“”;
ArrayList品位=新建ArrayList();
System.out.println(“输入你的上午以及期末考试的科目”);
而(!currentAnswer.equals(“end”))
{
currentAnswer=s.nextLine();//读取数字或单词
userWords+=“\n”+currentAnswer;
if(currentAnswer.equals(“000000”))
{
System.out.println(“您输入的数字顺序是:“+userWords”);
System.out.println(“退出…”);
系统出口(0);
}
String[]wordsplit=currentAnswer.split(“”);
字符串模式=“^\\d+$”;
模式p=模式。编译(\\d+);
stud.clear();
等级。清晰();
for(字符串str:wordsplit)
{
匹配器m=p.Matcher(str);
if(str.matches(“^\\d+$”){
字符串名称=新字符串(str);
System.out.println(“代码是:“+str”);}
if(m.find()){
添加(str);
System.out.println(“数字是:“+str”);}
}
等级集(0,0);
浮点数和=0;
适用于(浮动一:等级)
{
总和+=i;
}
浮动平均值=总和/等级.size();
System.out.println(“学生“+name+”的平均值为“+avg”);
}//而
}//主要
}//阶级
您正在尝试向浮动类型的arrayList添加字符串
if(m.find()){
grades.add(str); //str needs to be of float type
grades
是一个ArrayList
。为什么您认为您应该能够向它添加一个字符串
?感谢您的回答,我确保从字符串中删除数字部分使用等级。添加(Float.parseFloat(str))
。函数Float.parseFloat
将str
解析为Float
,前提是str
表示一个数字。