import java.util.Scanner ;
public class ProcessNumbers
{
public static void main( String[] args )
{
Scanner in = new Scanner(System.in) ;
System.out.print("Please enter an integer between 6 and 12, inclusive: ") ;
int num = in.nextInt() ;
System.out.print(num) ;
System.out.println();
boolean result = shouldProcess(num);
processInput(result) ;
}
public static boolean shouldProcess(int n)
{
if (n>=6 && n<12)
{
return true;
}
else
{
return false;
}
}
public static void processInput(boolean result2)
{
if (result2 == true)
{
int sum = findSum(num) ;
public static void findSum(int num)
{
int sum = 0 ;
for (int i = 1; i <=num; i++0)
{
sum +=i ;
System.out.println(sum) ;
}
}
else
{
System.out.println("Number is outside of acceptable range") ;
}
}
}
}
使用此代码我试图让用户输入一个数字。如果给定的数字在6到12之间(包括6和12),计算机将读取此数字并在方法shouldProcess中返回一个布尔值。如果它不在这两个数字之内,它将返回false。接下来我使用了第一个方法shouldProcess来使用方法processINput来判断它是否可以计算总和,只有当shouldProcess返回true时才会这样。
当我尝试计算总和时,我在我的shouldProcess方法块中遇到了这些错误
[File: /ProcessNumbers.java Line: 34, Column: 10] illegal start of expression
[File: /ProcessNumbers.java Line: 34, Column: 17] illegal start of expression
[File: /ProcessNumbers.java Line: 34, Column: 23] ';' expected
[File: /ProcessNumbers.java Line: 34, Column: 41] '.class' expected
[File: /ProcessNumbers.java Line: 34, Column: 44] ';' expected
[File: /ProcessNumbers.java Line: 36, Column: 21] ';' expected
[File: /ProcessNumbers.java Line: 37, Column: 38] ')' expected
[File: /ProcessNumbers.java Line: 37, Column: 39] ';' expected
[File: /ProcessNumbers.java Line: 40, Column: 37] ';' expected
[File: /ProcessNumbers.java Line: 43, Column: 6] 'else' without 'if'
[File: /ProcessNumbers.java Line: 47, Column: 3] reached end of file while parsing
[File: /ProcessNumbers.java Line: 48, Column: 1] illegal character: \26
答案 0 :(得分:2)
这些是您的代码尝试编译时的编译器错误,通常这与错误的语法有关,例如System.out.println(sum)
没有;
来指示行的结束。
还有一些其他的事情你可能想要改变,而不是使用shouldProcees方法和processInput方法,你最好将shouldProcess中的if语句移动到main方法并确定是否在那里处理processInput。然后你可以简单地使用if (n>=6 && n<=12) { processInput();
,它也可以让你清理过程输入法,因为它已经知道结果为真,你可以删除if (result2 == true)
。
我不认为您可以在java中使用嵌套方法,因此您必须将findSum移动到单独的方法中,或者只是删除findSum方法并直接在processInput方法中进行计算。
您可能需要考虑使用通常可以随时编译并检测语法错误的IDE。
答案 1 :(得分:1)
您应该缩进if / else和方法块,只是为了检查正确排列的大括号。我觉得你还有一个闭合支撑 - } - 最后都没有了。
例如,您的代码应如下所示:
public class... {
public static void main... {
if... {
if... {
...
}
}
}
}
这样,您可以非常轻松地跟踪您的牙箍。
答案 2 :(得分:1)
您正在函数findSum
中定义函数processInput
,这是不允许的,并且实际上不需要该函数。检查此代码:
import java.util.Scanner;
public class ProcessNumbers
{
public static void main( String[] args )
{
Scanner in = new Scanner(System.in);
System.out.print("Please enter an integer between 6 and 12, inclusive: ");
int num = in.nextInt();
System.out.print(num);
System.out.println();
boolean result = shouldProcess(num);
processInput(result, num); // passing the result and num
}
public static boolean shouldProcess(int n)
{
if (n>=6 && n<12)
{
return true;
}
else
{
return false;
}
}
public static void processInput(boolean result2, int num) // added int num argument
{
if (result2 == true)
{
//int sum = findSum(num);
//public static void findSum(int num) // not allowed
//{
int sum = 0; // missed the semi-colon
for (int i = 1; i <=num; i++)
{
sum +=i;
}
System.out.println(sum); // missed the semi-colon
//}
}
else
{
System.out.println("Number is outside of acceptable range");
}
}
}