【问题标题】:How to Print two columns of loops如何打印两列循环
【发布时间】:2014-10-16 06:41:56
【问题描述】:

我有一个文件,其中包含姓名列表以及他们的性别以及拥有该姓名的人数。我想并排打印前 10 个女性和男性名字。我的问题是当我运行我的程序时,它会打印出来。

什么是打印

"Female"    "Male"

  Jacob     Jacob
  Ethan     Ethan
  Michael   Michael
  Jayden    Jayden
  William   William
  Alexander Alexander
  Noah      Noah
  Daniel    Daniel
  Aiden     Aiden
  Anthony   Anthony

我想打印这个

"Female"    "Male"

Isabella     Jacob
Sophia       Ethan
Emma         Michael
Addison      William
Elizabeth    Alexander    
Ella         Joshua
Olivia       Mason
Ava          Evan
Emily        Nicholas
Abigail      Gavin                

for (String s : descending())
{

    for (int i = 0 ;i < 10;i++)
    {
    String z = oneName.get(i).getName();

        if('M' == oneName.get(i).getSex())
        {
         System.out.printf("%13.10s%10.10s%n",z, oneName.get(i).getName());

        }
        if('F' == oneName.get(i).getSex())
        {

          z = oneName.get(i).getName();
        }
    }

        break;
}

【问题讨论】:

  • “前 10 名”是什么意思? oneName 是如何构造的?如果没有这些信息,任何答案都只是猜测......此外,您似乎只在第一个 if 内打印......

标签: java loops for-loop


【解决方案1】:

每次打印时,z 始终设置为当前名称...

String z = oneName.get(i).getName();
if('M' == oneName.get(i).getSex())
{
    System.out.printf("%13.10s%10.10s%n",z, oneName.get(i).getName());

这表明女性名字似乎排在第一位。

假设数据以女性/男性顺序出现,您可以执行类似...

String maleName = null;
String femaleName = null;
for (int i = 0; i < 10; i++) {

    if ('M' == oneName.get(i).getSex()) {

        maleName = oneName.get(i).getName();

    }
    if ('F' == oneName.get(i).getSex()) {

        femaleName = oneName.get(i).getName();

    }

    if (maleName != null && femaleName != null) {

        System.out.printf("%13.10s%10.10s%n", femaleName, maleName);
        maleName = null;
        femaleName = null;

    }
}

但我正在对数据的存储顺序做出假设,并且在没有向国家提供证据的情况下,很难提出其他建议

更新了概念验证

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        List<Person> people = new ArrayList<>(25);
        people.add(new Person("Isabella", 'F'));
        people.add(new Person("Jacob", 'M'));
        people.add(new Person("Sophia", 'F'));
        people.add(new Person("Ethan", 'M'));
        people.add(new Person("Emma", 'F'));
        people.add(new Person("Michael", 'M'));
        people.add(new Person("Addison", 'F'));
        people.add(new Person("William", 'M'));
        people.add(new Person("Elizabeth", 'F'));
        people.add(new Person("Alexander", 'M'));
        people.add(new Person("Ella", 'F'));
        people.add(new Person("Joshua", 'M'));
        people.add(new Person("Olivia", 'F'));
        people.add(new Person("Mason", 'M'));
        people.add(new Person("Ava", 'F'));
        people.add(new Person("Evan", 'M'));
        people.add(new Person("Emily", 'F'));
        people.add(new Person("Nicholas", 'M'));
        people.add(new Person("Abigail", 'F'));
        people.add(new Person("Gavin", 'M'));

        String maleName = null;
        String femaleName = null;
        for (Person p : people) {

            if ('M' == p.getSex()) {

                maleName = p.getName();

            }
            if ('F' == p.getSex()) {

                femaleName = p.getName();

            }

            if (maleName != null && femaleName != null) {

                System.out.printf("%13.10s%10.10s%n", femaleName, maleName);
                maleName = null;
                femaleName = null;

            }
        }
    }

    public static class Person {

        private String name;
        private char sex;

        public Person(String name, char sex) {
            this.name = name;
            this.sex = sex;
        }

        public char getSex() {
            return sex;
        }

        public String getName() {
            return name;
        }

    }

}

打印出来的...

 Isabella     Jacob
   Sophia     Ethan
     Emma   Michael
  Addison   William
Elizabeth Alexander
     Ella    Joshua
   Olivia     Mason
      Ava      Evan
    Emily  Nicholas
  Abigail     Gavin

【讨论】:

  • 考虑提供一个runnable example 来证明您的问题。这将减少混乱并获得更好的响应
【解决方案2】:
String z = oneName.get(i).getName();

在forLoop之外声明变量z,否则每次都会创建新的字符串。

String z = null;
for (String s : descending())
{
    for (int i = 0 ;i < 10;i++)
    {
       z = oneName.get(i).getName();

【讨论】:

  • 它现在多次打印每个女性的名字
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
相关资源
最近更新 更多