java 。用户的输入通过实例变量在主类中起作用,但在其他类中不起作用

标签 java class variables subclass instance-variables

Java。用户的输入通过实例变量在主类中起作用,但在其他类中不起作用

用户在songtestdrive主类中输入类song的song1变量的值,但不在录音类中输入值。在 Recording 类中,它将用户的值打印为 NULL

import java.util.Scanner;

class songtestdrive{ 
public static void main(String[] args)
{   song rock = new song(); 
    recording record = new recording();
    rock.songtype();
    record.recording();
    // here song class's user value is working with rock.song1 
    System.out.println("So you are "+rock.song1+" Music lover");
}}

class song
{   Scanner in = new Scanner(System.in);

String song1;
 String songtype()
{   System.out.println("Which type of songs you like");
    song1= in.nextLine();
    return(song1);
}}

class recording
{
String record,yesno;
  public void recording()
{   song song_recording = new song();
    // need help here song_recording.song1 is unable to show the user's input instead showing null
    System.out.println("Do you want to record songtype "+ song_recording.song1);
}}

最佳答案

您在 main 中创建的 song(rock) 实例和您在 recording 中创建的 song 实例( song_recording)是不同的。

您可以将rock变量传递给recording方法

public void recording(Song song)
{  
    //song song_recording = new song(); <-- Remove this
    System.out.println("Do you want to record songtype "+ song.song1);
}

调用者变为

public static void main(String[] args)
{   song rock = new song(); 
    recording record = new recording();
    rock.songtype();
    record.recording(rock);
    System.out.println("So you are "+rock.song1+" Music lover");
}

如果 recording 实例始终与一首歌曲相关,则为 recording 类构造函数。

class recording {
    String record,yesno;
    Song song;
    class recording(Song song) {
        this.song = song;
    }
     public void recording() {
         //song song_recording = new song(); <-- Remove this
        System.out.println("Do you want to record songtype "+ song.song1);
    }
}

调用者变为

public static void main(String[] args)
{   song rock = new song(); 
    recording record = new recording(rock);
    rock.songtype();
    record.recording();
    // here song class's user value is working with rock.song1 
    System.out.println("So you are "+rock.song1+" Music lover");
}

注意: 遵循 Java 命名约定来命名类名。类名应以大写字母开头... SongRecording...

变量名称必须遵循驼峰式大小写样式 - songRecording

关于 java 。用户的输入通过实例变量在主类中起作用,但在其他类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51464997/

相关文章:

Python - 访问父成员

javascript - 是否可以从另一个文件实时获取 JavaScript 变量?

C++:显式与隐式默认初始化

ios - 无法在函数内更新数组

php - Netbeans PHP 断点变量值 "Evaluating..."

java - java中如何接受null JTextField?

java - 尝试运行 Google Speedtracer 仪表板

java - 有没有办法从 JVM 内部判断某个特定方法是否已经过 JIT 编译?

java - 使用 Java 将多行 JSON 转换为 XML

c++ - typedef, enum, bool, Bool ------混淆