编写程序,统计出字符串“want you to know one thing”中字母n和字母o的出现次数。
我是这么写的:
============================================
class CheckStr{
private String str ;
private String item ;
public CheckStr(String s, String i){
this.setStr(s) ;
this.setItem(i) ;
}
public void setStr(String s){
str = s ;
}
public void setItem(String i){
item = i ;
}
public String getStr(){
return str ;
}
public String getItem(){
return item ;
}
public int getNum(){
int j = 0 ;
char c[] = str.toCharArray() ;
for(int i = 0; i<c.length; i++ ){
if(c.equals(item)){
j++ ;
}
}
return j ;
}
}
public class CheckTheChar{
public static void main(String args[]){
CheckStr cs = new CheckStr("want you to know one thing", "n") ;
CheckStr cs1 = new CheckStr("want you to know one thing", "o") ;
System.out.println(cs.getNum()) ;
System.out.println(cs1.getNum()) ;
}
}===========================================
编译出错,提示:无法取消引用 char
不清楚是怎么回事,求解。作者: 李挺 时间: 2013-2-27 11:44
亲, if(c.equals(item))这句是有问题的,永远是false
你把代码改成
class CheckStr{
private String str ;
private char item ;
public CheckStr(String s, char i){
this.setStr(s) ;
this.setItem(i) ;
}
public void setStr(String s){
str = s ;
}
public void setItem(char i){
item = i ;
}
public String getStr(){
return str ;
}
public char getItem(){
return item ;
}
public int getNum(){
int j = 0 ;
char c[] = str.toCharArray() ;
for(int i = 0; i<c.length; i++ ){
if(c[i]==item){
j++ ;
}
}
return j ;
}
}
public class CheckTheChar{
public static void main(String args[]){
CheckStr cs = new CheckStr("want you to know one thing", 'n') ;
CheckStr cs1 = new CheckStr("want you to know one thing", 'o') ;
修改后的程序:
class CheckStr{
private String str ;
private char key;
public CheckStr(String str, char key){
this.setStr(str);
this.setKey(key);
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public char getKey() {
return key;
}
public void setKey(char key) {
this.key = key;
}
public int getNum(){
int count = 0 ;
char arr[] = str.toCharArray() ;
for(int i = 0; i < arr.length; i++ ){
if(arr[i] == key){
count++ ;
}
}
return count ;
}
}
public class CheckTheChar{
public static void main(String args[]){
CheckStr cs = new CheckStr("want you to know one thing", 'n') ;
CheckStr cs1 = new CheckStr("want you to know one thing", 'o') ;
System.out.println(cs.getNum()) ;
System.out.println(cs1.getNum()) ;
}
}
作者: vmvm555 时间: 2013-2-27 11:51
我帮你修改一下代码吧
class CheckStr {
private String str;
private String item;
public CheckStr(String s, String i) {
this.setStr(s);
this.setItem(i);
}
public void setStr(String s) {
str = s;
}
public void setItem(String i) {
item = i;
}
public String getStr() { //我不知道你定义这个方法有什么用
return str;
}
public String getItem() { //我不知道你定义这个方法有什么用
return item;
}
public int getNum() {
int j = 0;
char c[] = str.toCharArray();
for (int i = 0; i < c.length; i++) {
if ((c[i] + "").equals(item)) { //c[i]是基础数据类型,不支持equals方法,得先将其变为String对象才行
j++;
}
}
return j;
}
}
public class CheckTheChar {
public static void main(String args[]) {
CheckStr cs = new CheckStr("want you to know one thing", "n");
CheckStr cs1 = new CheckStr("want you to know one thing", "o");