我不知道出了什么问题。我有一个类项目,使用三个方法来获取用户输入并告诉哪个原始类型是最适合输入的原始类型,但由于某些原因,当我运行代码时,它将每个输入转换为0.这里' s我的代码(主要是在不同的类): 代码被修复了,不需要进一步的答案这只是我对语法的新手理解。
package stuff;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class driver
{
public static void run() throws IOException
{
System.out.println("Please input a number");
num1 = prompt();
analyze();
}
static long num1;
public static long prompt() throws IOException
{
BufferedReader input = new BufferedReader (new InputStreamReader(System.in));
String Selection1 = input.readLine();
long num1 = Long.parseLong(Selection1);
return num1;
}
public static void analyze() throws IOException
{
System.out.println(num1);
if (num1>=Byte.MIN_VALUE && num1<=Byte.MAX_VALUE)
{
System.out.println("you should use a byte");
}
else if (num1>=Short.MIN_VALUE && num1<=Short.MAX_VALUE)
{
System.out.println("you should use a short");
}
else if (num1>=Integer.MIN_VALUE && num1<=Integer.MAX_VALUE)
{
System.out.println("you should use an integer");
}
else
{
System.out.println("you should use a long");
}
}
}
答案 0 :(得分:1)
您应该使用prompt
方法返回的值,并且知道。
您应该将返回的值分配给prompt();
,而不是仅仅调用num1
:
num1 = prompt();
该程序神奇地工作!
&#34;但是等等!在prompt
方法中,我已经将已解析的long分配给num1
!看&#34!;你喊道。
long num1 = Long.parseLong(Selection1);
实际上,您并未将解析后的值分配给您在类级别声明的num1
变量。您正在创建一个名为num1
的新变量!