2014-10-11 71 views
0

我在验证数据领域需要帮助。出于某种原因,我不断收到一个不兼容的错误。我现在检查了几次,我有正确的类型。有什么不对,2班。错误是int驱动程序类继续在“name = student.setName(input);”中引入不兼容的类型。请解释为什么? 更新验证测试分数

import java.util.Scanner; 
public class P5A 
{ 
public static void main (String args[]) 
{ 
    System.out.println("Always Show"); 

    Scanner reader = new Scanner(System.in); 

    student student = new student(); 

    String name, validate, valtests; 
    int tests, score; 


    System.out.print("Please enter the students Name: "); 
    String input = reader.nextLine(); 
    student.getName(input); 
    student.validateData(); 
     System.out.print("Please enter Test (As number 1-3 for test number, then test score): "); 
     tests = student.getScore(reader.nextInt(), reader.nextInt()); 
     student.setTests(tests); 

     System.out.print("Please enter Test (As number 1-3 for test number, then test score): "); 
     tests = student.getScore(reader.nextInt(), reader.nextInt()); 
     student.setTests(tests); 

     System.out.print("Please enter Test (As number 1-3 for test number, then test score): "); 
     tests = student.getScore(reader.nextInt(), reader.nextInt()); 
     student.setTests(tests); 

     System.out.println(student.toString()); 



}//end of main mthod 
}//end of main class/Driver 

这里是它已经被编辑因为这个问题被张贴第二类,

import java.util.*; 
import java.lang.*; 
public class student 
{ 
private String name, result, testchange; 
private int test1, test2, test3; 

public student() 
{ 
    name = ""; 
    test1 = 0; 
    test2 = 0; 
    test3 = 0; 
    result = ""; 
}//constructor 

public String getName (String name) 
{ 
    return name; 
}//getting the name 

public String validateData() 
{ 
    if (name == null)name = "Error! Must enter at least one character"; 
    return name; 
}//end validation method 

public int getScore (int i, int score) 
{ 
    if (i == 1) test1 = score; 
    else if(i == 2)test2 = score; 
    else test3 = score; 

    if (i == 1)return test1; 
    else if (i == 2) return test2; 
    else return test3; 
}//getting score of tests 

public String validateTests() 
{ 
    String testschange; 
    if (test1 < 0 || test1 > 100) { 
     testschange = " You have entered an invalid number, between 1-100. \nPlease restart!"; 
     testschange = Integer.toString(test1) ; 
    } 
    else if (test2 < 0 || test2 > 100) { 
     testschange = " You have entered an invalid number, between 1-100. " + 
     "\nPlease restart!"; 
     testschange = Integer.toString(test2); 
    } 
    else if (test3 < 0 || test3 > 100) { 
     testschange = " You have entered an invalid number, between 1-100. " + 
     "\nPlease restart!"; 
     testschange = Integer.toString(test3); 
    } 
    else String.toInteger(testchange) = test1 || test2 || test3; 
    return testchange; 
}//validating the test scores and tesing each one against method 

public int getAverage() 
{ 
    int average; 
    average = (int) Math.round((test1 + test2 + test3)/ 3.0); 
    return average; 
}//getting a average of all the scores 

public int getHighScore() 
{ 
    int highscore; 
    highscore = test1; 
    if (test2 > highscore) highscore = test2; 
    if (test3 > highscore)highscore = test3; 
    return highscore; 
}//getting the highscores of all three 

public String toString() 
{ 
    String str; 
    str = "Name: " + name + 
      "\nTest1: " + test1 + 
      "\nTest2: " + test2 + 
      "\nTest3: " + test3 + 
      "\nAverage: " + getAverage() + 
      "\nHighscore: " + getHighScore(); 
    return str; 
}//putting all the tests together to view in termainal 


} 
+0

字符串相等的第一条规则:你不要用'=='比较字符串。其次,你的问题陈述非常广泛。通过缩小具体出错地点和地点,可以为您提供最好的服务。 – Makoto 2014-10-11 23:04:43

+0

我会加入Makoto评论,你必须再次研究如何正确编程。仔细检查你的代码,并尝试认为如果逻辑正确。例如:public String getName(String nm),是错误的getName只应该返回“name”,而不是将其设置为nm。使用void setter函数来解决这个问题。 – 2014-10-11 23:11:13

+0

请向我解释为什么你需要有2种方法从驱动程序获取某些东西并将变量设置为某种东西? – jdog1218 2014-10-12 23:13:39

回答

0

这是错误的行:

name = student.setName(input); 

setNamestudent对象的方法返回void;也就是说,它不会返回一个值。你不能将void方法的结果赋值给任何东西。

删除作业并清除其中一个错误。