java - main 中的方法不会调用对象实例的方法?

标签 java function methods

这是一个包含 3 个类文件的 java 作业。问题是当我在 main.c 中调用“doOperations”方法时。 if 语句正确读取文件,但对象方法不起作用(例如 tv.on、tv.volumeUp tv.setChannel(scan.nextInt() 等))。

有人能看出我哪里出了问题吗?谢谢。

电视类文件。

import java.io.*;
import java.util.Scanner;

public class TV {
    boolean on;
    boolean subscribe;
    int currentchannel;
    int indexChan;
    int volume;
    File chanList;
    Scanner chanScan;
    TVChannel[] channels;
    final int MaxChannel = 100;

    public TV(){
        on = false;
        currentchannel = 1;
        volume = 1;
        channels = new TVChannel[MaxChannel];   //Create object of an array, default value = null.
        subscribe = false;

    }

    public void turnOn(){
        on = true;
    }
    public void turnOff(){
        on = false;
    }
    public void channelUp(){
        currentchannel++;
    }
    public void channelDown(){
        currentchannel--;
    }
    public void volumeUp(){
        volume++;
    }
    public void volumeDown(){
        volume--;
    }
    public TVChannel getChannel(){
        return channels[currentchannel];
    }
    public void setChannel(int c){
        if(channels[c]!= null)
        currentchannel = c;
    }
    public boolean subscribe(String provider) throws IOException{
        chanList = new File(provider);
        chanScan = new Scanner(chanList);

        if(chanList.exists()){
            while(chanScan.hasNext()){

                indexChan = chanScan.nextInt();
                channels[indexChan] = new TVChannel(indexChan, chanScan.nextLine());

            }
            chanScan.close();
            return true;
        }
        else return false;
    }

    public void printAll(){
        for(int i = 0; i < MaxChannel; i++){

            if(channels[i]!= null)
            System.out.println(channels[i].channelNumber+"\t"+channels[i].channelName);
        }
    }

    public void displayChannel(int c){
        if(channels[c]!= null)
        System.out.println(channels[c].getChannel()+"\t"+channels[c].getName());
    }
    public void displayCurrentChannel(){
        if(channels[currentchannel] != null)
        System.out.println(channels[currentchannel].getChannel() +" "+ channels[currentchannel].getName());
    }
}

主要功能

import java.io.File;
import java.io.IOException;
import java.util.Scanner;


public class TestTV {

    public static void main(String[] args) throws IOException{


        TV tv = new TV();
        tv.subscribe("chan.txt");

        if(tv.subscribe = true){
            tv.printAll();
            doOperations("operations.txt", tv);

        }

    }
    //Static means only one instance of object. 
    public static void doOperations(String opFileName, TV tv) throws IOException{
            File op = new File(opFileName);
            Scanner scan = new Scanner(op);
            String opa = scan.next();

            while(scan.hasNext()){
                System.out.println(scan.next());

                if(opa.equals("on")) tv.turnOn();
                else if(opa.equals("off")) tv.turnOff();
                else if(opa.equals("channelUp")) tv.channelUp();
                else if(opa.equals("channelDown")) tv.channelDown();
                else if(opa.equals("volumeUp")) tv.volumeUp();
                else if(opa.equals("volumeDown")) tv.volumeDown();
                else if(opa.equals("showChannel")) tv.displayCurrentChannel();
                else if(opa.equals("setChannel"))tv.setChannel(scan.nextInt()); //Error
            }
            scan.close();
        }

}

最佳答案

你忘了把这个 String opa = scan.next(); while 循环内部。当然,您需要在每个 token 上存储结果。

while(scan.hasNext()){
    opa = scan.next();
    System.out.println(opa); //don't just call scan.next() 
                             //and discard the result. Unless that's really what you want?
    .....
}

关于java - main 中的方法不会调用对象实例的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14507111/

相关文章:

python - 谁能帮我理解 Python 变量作用域?

javascript - Jquery/javascript函数问题

java - 添加Arraylist值方法java

java - 如何在java中修改xml-stylesheet属性值

java - 警告 : The method assertEquals from the type Assert is deprecated

java - 无法获得正确的条件

java - 让用户在 Action Listener 的 for 循环中输入 JTextField

javascript - 运行函数时出现意外输出。输出原型(prototype)代码

Angular 2 : How to call a method from another component

java - 如何检查类名是否有效?