[英]Java. Adding a Method to test a Constructor
添加一个方法来测试短语构造器将字符串转换为大写。 请勿在测试中使用toUpperCase方法。 使用文字字符串(用引号括起来的“这是文字字符串”)。 请记住,不能使用==来比较两个对象(字符串是对象)must必须使用equals方法。
我收到“争论的左手一定是变量”错误。
public class PhraseTest {
public boolean phraseTest(String phrase) {
boolean passes = false;
if (String.compareTo(phrase("test")) = phrase.toUpperCase()) {
System.out.println(phrase);
return passes;
}
}
}
不同的班级在这里。
package edu.htc.java1.phrasegame.model;
import java.util.ArrayList;
public class Phrase {
private String phrase;
public Phrase(String phrase) {
phrase = phrase.toUpperCase();
for(char c : phrase.toCharArray()) {
letters.add(new Letter(c));
}
}
public String getPhrase() {
return phrase;
}
// public String phrase;
ArrayList<Letter> letters = new ArrayList<Letter>();
public ArrayList<Letter> getLetters() {
return letters;
}
}
if (String.compareTo(phrase("test")) = phrase.toUpperCase())
您想在该行做什么? String.compareTo是一个函数,因此编译器告诉您String.compareTo不是变量;它是变量。 短语是一个字符串(这是传入的参数),所以我不确定您的意思吗? 也许您是说new Phrase(phrase).getPhrase().equals(phrase.toUpperCase())
?
因为当您使用single =
操作时,您正在执行赋值操作,所以编译器期望左侧有一个变量来保存右侧的值。
因此,尝试更改此行:
if (String.compareTo(phrase("test")) = phrase.toUpperCase()) {
像这样:
if (new Phrase("test").getPhrase().equals(phrase.toUpperCase())) {
做测试的那条线应该是这样的
if ("TEST".equals(new Phrase("test").getPhrase())) {
或者更好的是,如果您使用的是JUnit,请执行断言
Assert.assertEquals("TEST", new Phrase("test").getPhrase());
在这两种情况下,我们都将创建一个新的Phrase
,并确保其中的实际文本是所传递内容的大写版本。
如果这使您更容易理解,则可以将其分为两行。
Phrase phraseToTest = new Phrase("test");
if ("TEST".equals(phraseToTest.getPhrase())) {
顺便说一句,您的班级有一个bug,因此该测试将失败,直到您修复该bug。
我有两个问题。
首先,您要进行赋值,而不是对if
条件进行比较 。 这就是导致您看到的错误的原因(您正在尝试将phrase.toUpperCase()
的结果分配给String.compareTo(phrase("test"))
。
第二个问题是,在String
类中没有名为compareTo
static
方法,因此即使您固定了要进行比较而不是赋值的条件,这仍然行不通。 有一个compareTo(String)
的方法String
类, 但它不是static
。 compareTo
是一个实例方法,因此您需要一个对象来调用该方法,您不能像当前正在尝试的那样从静态上下文中调用它。
我对要实现的最佳猜测是:
public boolean phraseTest(Phrase phrase) {
return "TEST".equals(phrase.getPhrase());
}
我将phrase
参数更改为Phrase
类的实例(否则它不是真的在测试Phrase
吗?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.