gpt4 book ai didi

java - 进口?使用包

转载 作者:行者123 更新时间:2023-12-02 07:53:38 28 4
gpt4 key购买 nike

我正在做作业,我已经接近完成作业了,但我遇到了问题。我刚刚学会了如何在 eclipse 中使用包,所以我有一个类从包中导入另一个类(我想我说得对)主要提示用户输入 -100 到 100 之间的整数,但我在验证它时遇到问题。我知道问题出在我导入的位置,我只是不确定修复它需要的方向。

这是我的主要代码的一部分。 (如果您想跳过,我的问题从最后几行开始)

    import myUtils.util.Console;

public class ConsoleTestApp
{
public static void main(String args[])
{
// create the Console object
Console c = new Console();

// display a welcome message
c.println("Welcome to the Console Tester application");
c.println();

// int
c.println("Int Test");
int i = c.getIntWithinRange("Enter an integer between -100 and 100: ", -101, 101);
c.println();

在最后一行代码

    int i = c.

我在 i 下看到一条波浪线,它告诉我我没有使用局部变量,所以我不确定在这种情况下到底是什么解决了这个问题,因为我试图在另一个类中使用它。我需要创建一个对象吗?

我有一个名为 Console 的类,它位于另一个我相信已正确导入的包中。这是我在控制台类中停留的代码。

package myUtils.util;

import java.util.Scanner;

public class Console

{
Scanner sc = new Scanner(System.in);
public void print(String s)
{
System.out.println();
}

public void println(String s)
{
System.out.println();

}

public void println()
{
System.out.println();

}

public int getIntWithinRange(String prompt, int min, int max)
{

int i = 0;
boolean isValid = false;
while (isValid == false)
{
System.out.println(prompt);
if (sc.hasNextInt())
{

i = sc.nextInt();
if (i < min)
{
System.out.println("Error! Please enter an integer greater than -100");
}

else if (i > max)
{
System.out.println("Error! Please enter an integer less than 100");
}

else
isValid = true;
}

else
System.out.println("Error! Invalid number value");
sc.nextLine();

}
// return the int
return i;

}

public double getDoubleWithinRange(String prompt, double min, double max)
{

int d = 0 ;
boolean isValid = false;
while (isValid == false)
{
System.out.println(prompt);
if (sc.hasNextInt())
{
//if user chooses menu option less than 1 the program will print an error message
d = sc.nextInt();
if (d < min)
{
System.out.println("Error! Please select menu option 1, 2, or 3");
}
//if the user chooses a menu option greater than 3 the program will print an error
else if (d > max)
{
System.out.println("Error! Please select menu option 1, 2, or 3");
}
//if the option is between 1 and 3 the menu option is valid
else
isValid = true;
}

else
System.out.println("Error! Invalid number value");
sc.nextLine();

}
// return the int
return d;

}


public String getRequiredString(String prompt)
{
return prompt;

}

public String getChoiceString(String prompt, String s1, String s2)
{
return s2;

}

public int getInt(String prompt)
{
return 0;

}

}

当我运行这个程序时,我不断得到最后一次打印的结果,这是一个无效的数值。我是否没有正确从另一个控制台的 main 方法导入代码?

最佳答案

这不是导入问题。如果您导入的内容有误,您的程序将无法编译,或者至少无法启动。

就实际解决您的问题而言,我建议查看您认为getIntWithinRange 中最外层 else 相关的两行> 并考虑哪些代码实际上与 else 关联,哪些代码不关联。主要问题是 ifelse 仅与一行关联,除非您用大括号括住多行。因此,您应该将 getIntWithinRange 的最后一个 else 修改为如下所示

else {
System.out.println("Error! Invalid number value");
sc.nextLine();
}
<小时/>

编辑:回应更新的问题

I get a squiggly line under i that tells me I am not using the local variable so I'm not sure what exactly fixes that in this situation since I'm trying to use it in another class. Do I need to create an object?

目前,您编写的代码在 main 中未使用 i。这包括不将其传递给任何其他方法或任何构造函数。由于 i 是局部变量,因此无法在 main 外部访问它,因此 Eclipse 会向您发出警告。来自 Eclipse 的这条“波浪红线”警告不会阻止您的代码正常编译和运行,但它旨在帮助您找到自己代码中的错误。

从更广泛的角度来看,由于未使用本地变量,会出现许多错误,Eclipse 希望帮助您防止这些错误。考虑一下想要将二维数组的所有元素初始化为用户提供的某个数字的示例(变量名称比我在实际程序中使用的变量名称短,但它们仍然能说明问题):

public static final int N = 10;

public void main(String[] args) {
int[][] a = new int[N][N];
int n = /* Read number from the user */;

for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
a[i][j] = i; // Bug - we meant to initialize to n
}
}

// ...
}

Eclipse 对未使用的本地变量进行标记可以帮助您更轻松地发现此类错误。

关于java - 进口?使用包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9917106/

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