有没有办法在java中自动创建变量?

卡利凯
public static void main(String[] args) throws Exception{
    String fileLocation = System.getProperty("user.dir");
    String dataPath = fileLocation + File.separator + "predators.txt";

    java.io.File file = new java.io.File(dataPath);
    Scanner input = new Scanner(file);

    input.useDelimiter(":");
    String predatorsName, latinName, weight, speed, stealth, risk, killer, interestingFact;

    for (int i = 0; input.hasNext(); i++) {
        predatorsName = input.next();
        latinName = input.next();
        weight = input.next();
        speed = input.next();
        stealth = input.next();
        risk = input.next();
        killer = input.next();
        interestingFact = input.nextLine();
        System.out.println(weight);
    }          
}

嗨,我这里有一个程序,它扫描一个文件,将多个关于动物的数据,然后使用 input.next() 将每个单词/数字分配给相应的字符串。现在,当我打印重量时,所有动物的重量都会打印在输出中。我想知道是否有办法...说例如在第三行打印动物的重量?谢谢你

蒂莫西·T。

为什么它不起作用

它打印出所有权重的原因是因为在循环中你有这个:

for (int i = 0; input.hasNext(); i++) {
    ...
    weight = input.next();
    ...
    System.out.println(weight);
}  

这意味着在循环的每次迭代中,它会先存储权重,然后显示它。因此,每个重量都将在输出中打印出来。

解决方案

我将创建一个Predator类,而不是在循环中显示权重(根据您当前的实现),我们将使用它来将数据填充到 Predators 列表中。我们只会在完成后显示它们。

创建 Predator 类:

class Predator{
    String predatorName;
    String latinName;
    String weight;
    ..

    //add your getters and setters as well
}

然后使用它:

public static void main(String[] args) throws Exception{
    List<Predator> predatorList = new ArrayList();
    String fileLocation = System.getProperty("user.dir");
    String dataPath = fileLocation + File.separator + "predators.txt";

    java.io.File file = new java.io.File(dataPath);
    Scanner input = new Scanner(file);

    input.useDelimiter(":");

    List<Predator> predatorList = new ArrayList();
    Predator predator = new Predator();             

    for (int i = 0; input.hasNext(); i++) {
        predator.setPredatorName(input.next());
        predator.setLatinName(input.next()));
        ...
        predatorList.add(predator);
    }
}

最后检索列表中的不同捕食者非常简单:

Predator myPredator = predatorList.get(0); //which returns you the first predator in the list.
System.out.println(myPredator.getWeight()); // this will only print out the weight of the first predator

在上面的例子中,我predator在循环中重复使用了相同的变量。如果您愿意,您当然可以Predator在循环的每次迭代中创建一个新实例,但这意味着您实际上是在每次迭代中创建一个新对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法防止自动变量删除?

有没有办法自动创建 TeamCity 项目?

有没有办法创建全局 CSS 变量?

有没有办法通过迭代创建变量?

有没有办法在 Django 中创建记录时自动创建页面(和 slug)

有没有办法在regexp中插入变量?

有没有办法在ISim中显示变量?

有没有办法在 manim 中创建散点图?

有没有办法在Lua中创建GUI?

有没有办法从解释器的内存中删除创建的变量,函数等?

有没有办法在C ++中创建未知数量的变量的构造函数?

有没有办法访问动态创建的组件中的@Input变量?

有没有办法在 C++ 中创建类型变量?

有没有办法在 Java JFrame 中自动编辑按钮的属性?

有没有办法在java中的ResultSet变量中获取特定数据

有没有办法检查是否在Java中定义了变量?

有没有办法让Eclipse自动将我的所有变量都设为final?

有没有办法创建一个可以在所有活动中访问的全局变量

有没有办法为其他数据框中的变量组合创建带有行的数据框?

在 C++ 中,有没有办法创建可变的 const 成员变量?就像Java中的“final”关键字一样?

有没有办法为 PHP 的超全局变量禁用自动建议?

有没有办法通过kotlin-extensions更改自动创建的视图的名称?

有没有办法自动创建可安装的触发器?

有没有办法禁用“ iOS Team Provisioning Profile:*”自动创建?

有没有办法创建一个自动重置的序列列?

有没有办法从命令行为 Xcode 项目自动创建方案

有没有办法知道使用LLVM中的alloca指令创建的堆栈分配的局部变量的堆栈地址

discord.js 有没有办法在创建新频道时将频道的 id 放入 .then() 之外的变量中

有没有办法从 Python 用户界面中创建的变量中保存输入(浮点数)?