gpt4 book ai didi

Java 从我的程序中获取奇怪的文本作为输出

转载 作者:行者123 更新时间:2023-11-30 04:23:22 25 4
gpt4 key购买 nike

错误:编译时没有错误,执行时也没有错误,程序按照我想要的方式启动。但是!

问题:我想要实现的目标很简单。我在 JTextField 中填写的文本应该放在 JTextArea 中。

示例: 我在 JTextField 中输入单词“Cat”,数组列表会记住单词“Cat”,然后单词 Cat 就会出现在 JTextArea 中。然后我重复这个过程来创建一个大名单。 (ofc我实际上并没有输入“”标记)

当前输出:我输入单词“Cat”,(我认为)数组列表会记住它并给出输出:Paneel$naam@174aa60

我认为这是:我对 Java 非常陌生(我什至对编程也很陌生),所以我可能完全错了。 Paneel$naam@174aa60:Paneel$naam 告诉我它来自哪里,然后我得到 @ 符号(不知道这个符号在 java 中意味着什么),然后(我认为)这是单词“Cat”的哈希码 174 = C、aa = a 且 60 = t。我在多个网站上阅读过,我认为这与 Object 类和 toString 有关。

问题我必须更改或添加哪些内容才能使其正常工作? (进行了研究并尝试过,但由于我的知识有限,我未能成功)

整个代码:

import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

// Main method to make the frame
public class Loterij3 extends JFrame {
public static void main( String args[] ) {
JFrame frame = new Loterij3();
frame.setExtendedState( frame.MAXIMIZED_BOTH );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setTitle( "Klanten Register" );
frame.setContentPane( new Paneel() );
frame.setVisible( true );
}
}

class Paneel extends JPanel {
private boven boven;
JTextArea textvak1;
JTextField textvak2;
OnthoudNaam onthoudNaam = new OnthoudNaam();
JTextField invoervak1;

public Paneel() {
setLayout( new BorderLayout() ); // using border Layout.
setBackground( Color.LIGHT_GRAY );

boven = new boven();

textvak1 = new JTextArea();
add( new JScrollPane( textvak1 ) );
textvak1.setBackground( Color.WHITE );

textvak2 = new JTextField();
textvak2.setHorizontalAlignment(JTextField.CENTER);
textvak2.setEditable( false );

add( boven, BorderLayout.NORTH );
add( textvak1, BorderLayout.CENTER );
add( textvak2, BorderLayout.SOUTH );
}


public class boven extends JPanel {
JButton kiesWin, resetL;
JLabel label1;

public boven() {
setBackground( Color.LIGHT_GRAY );
setLayout( new GridLayout( 1, 4, 100, 5 ) ); // using GridLayout.
Border border =
BorderFactory.createEmptyBorder( 10, 10, 10, 10 );
setBorder( border );

kiesWin = new JButton("Kies een Winnaar!");
kiesWin.addActionListener( new kies() );
resetL = new JButton("Reset alles");
resetL.addActionListener( new reset() );
label1 = new JLabel("Voer Persoon in en druk op enter: ", JLabel.RIGHT);
invoervak1 = new JTextField( 20 );
invoervak1.addActionListener( new InvoerVakHandler() );

add( label1 );
add( invoervak1 );
add( kiesWin );
add( resetL );
}
}

// de naam
class naam {
private String ingevoerdNaam;

public naam( String ingevoerdNaam) {
this.ingevoerdNaam = ingevoerdNaam;
}

public String getIngevoerdNaam() {
return ingevoerdNaam;
}
}

// Arraylist
class OnthoudNaam extends JPanel {
private ArrayList<naam> lijst;

public OnthoudNaam() {
lijst = new ArrayList<naam>();
}

public void voegNaamToe(naam x ) {
lijst.add(x);
}

public String toString() {
StringBuffer buffer = new StringBuffer();
for(naam x : lijst ) {
buffer.append( x );
buffer.append( "\n" );
}
return buffer.toString();
}
}

// invoer handler
public class InvoerVakHandler implements ActionListener {
public void actionPerformed( ActionEvent e ) {
String invoer = invoervak1.getText();
naam naam = new naam( invoer );
onthoudNaam.voegNaamToe( naam );
textvak1.setText( onthoudNaam.toString() );
}
}
// kies
class kies implements ActionListener {
public void actionPerformed( ActionEvent e ) {
}
}

// reset
class reset implements ActionListener {
public void actionPerformed( ActionEvent e ) {
}

}
}

最佳答案

不完全是,只是 Object.toString()naam 实例上调用:

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

getClass().getName() + '@' + Integer.toHexString(hashCode())

所以这不是 Cat 的哈希码 - 这是您的对象的哈希码。

要解决此问题,只需覆盖 toString:

@Override
public String toString() {
return ingevoerdNaam;
}

(根据您之前的问题,我仍然建议避免所有这些内部类,并且我仍然建议您开始遵循 Java 命名约定。 )

关于Java 从我的程序中获取奇怪的文本作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16449464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com