java中的Getter、setter和数组

java中的Getter、setter和数组,java,Java,我现在正在做的java任务有问题。我试着回答问题3和问题4,这是基于下面的代码 以下代码是对问题1和2的回答,其中 希望您修改应用程序,使每一行输出 编号,从1开始 这样做时,如果插入了另一个println/nextLine 在此之后,您不需要重新编号所有行。单程 这样做是使用整数变量来存储当前行 每次输出一行时,将其编号并增加一 运行程序后,输出窗口应如下所示: 1: Enter a line Some input 2: Enter another line More input 3: E

我现在正在做的java任务有问题。我试着回答问题3和问题4,这是基于下面的代码

  • 以下代码是对问题1和2的回答,其中 希望您修改应用程序,使每一行输出 编号,从1开始

  • 这样做时,如果插入了另一个println/nextLine 在此之后,您不需要重新编号所有行。单程 这样做是使用整数变量来存储当前行 每次输出一行时,将其编号并增加一

运行程序后,输出窗口应如下所示:

1: Enter a line
Some input
2: Enter another line
More input
3: Enter the last line
The end
The end,More input,Some input

上面的代码回答了问题1和2

对于问题3,它要求我创建一个名为Line的新java类,然后向该类添加适当的实例变量(字段)和构造函数,以便 文本行(一个字符串,称为text)和序列号(一个int,称为seqNum) 可以储存。对于其他类,这些实例变量应该是“只读”的。那个 也就是说,应该将它们声明为“private”,并提供一个“getter”方法来返回 价值这就是我在下面代码中所做的:

public class Line {

public String getText() {

return text;

 }

   private String text;

   public int getSeqNum() {

    return seqNum;

}

private int seqNum;
}

然后,它要求修改类Practical1的main方法,以便存储每行文本 和它的序列号,而不是字符串对象。修改 所需的变量类型(msg1等)。请注意,要打印一行,您需要 调用getter方法。程序的输出应该与以前完全相同

最后,更多的投入,一些投入

最后,它要求您现在更改程序,以便使用该行打印序列号。这个 输出的最终线应为:

 3: The end,2: More input,1: Some input
我该如何回答这个问题

对于问题4,最后一个问题,它希望我 修改程序,使其使用循环重复执行以下操作: -提示输入(使用行seqNum和提示短语:“输入一行”) -读取输入行 -将输入行存储在行或数组的下一个位置 行的数组列表

一旦用户输入STOP作为输入,循环应该终止,另一个循环应该停止 按相反顺序打印每一行。例如(您应键入的输入为粗体):


我该如何回答这个问题?

您可以采用以下方法来解决这个问题

一线班

用于在提供停止文本之前进行无限输入的演示类

类演示
{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
列表=新的ArrayList();
int计数器=0;
while(true)
{
扫描的字符串\u line=sc.nextLine();
如果(扫描行等于(“停止”))
打破
列表。添加(新行(计数器、扫描行));
计数器++;
}
//按照seq num的相反顺序对列表进行排序
list.sort(Comparator.comparingInt(Line::getSeq.reversed());//java 8 Comparator
list.forEach(e->System.out.println(e.getSeq()+“”+e.getText());//Java8foreach
}
}
而且

  • 需要注意的是,
    while(true)
    可以替换为
    while(scanner.hasNextLine())
    。因此,它将扫描,直到提供下一行输入
  • 另外,Java8
    forEach
    也可以用传统的for循环代替

关于你对问题4所说的,如果我要使用演示类代码,我是否需要更改打印代码的任何内容?输入一行,输入另一行,输入最后一行?是的,这将解决你的问题。在用户输入“停止”之前,它将占用无限多行。然后以相反的顺序打印所有行如果它解决了你的问题,然后接受答案或注释需要进一步修改我对你的意思感到困惑,它用你的代码解决了我的问题。那么,你是说完全删除打印输入行的代码,还是不是真的???如果我要完全删除它,我怎么打印出一行呢?Aashish Pawar,我只是运行了我插入的代码,但它似乎没有运行我想要的输出,输出问题4所需的内容。我不确定我是否做错了什么。是我需要把它加入Line类,还是它应该能够加入???我肯定把你提供的代码添加到我的代码中了???
 3: The end,2: More input,1: Some input
1: Enter a line
Some input
2: Enter a line
More input
3: Enter a line
The end
4: Enter a line
STOP
3: The end
2: More input
1: Some input
public class Line
{
    private int seq_num;
    private String text;
    Line(int seq_num, String text)
    {
        this.seq_num = seq_num;
        this.text = text;
    }
    public String getText()
    {
        return this.text;
    }
    public int getSeq()
    {
        return this.seq_num;
    }
}
class Demo
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Line> list = new ArrayList<>();
        int counter =0;
        while(true)
        {
            String scanned_line = sc.nextLine();
            if(scanned_line.equals("STOP"))
                break;

            list.add(new Line(counter,scanned_line));
            counter++;
        }
        //sort the list as per the seq num in reverse order 
        list.sort(Comparator.comparingInt(Line::getSeq).reversed()); // java 8 comparator
        list.forEach(e-> System.out.println(e.getSeq()+" "+e.getText()));//java 8 forEach
    }
}