Java 为什么不是';这不是一个错误吗?

Java 为什么不是';这不是一个错误吗?,java,arrays,recursion,Java,Arrays,Recursion,下面的程序是一个递归程序,用于查找数组的最大值和最小值。(我想!如果它不是一个有效的递归程序,请告诉我。虽然有更简单的方法来查找数组中的最大值和最小值,但我以递归的方式做只是作为练习的一部分!) 该程序工作正常,并产生预期的输出 在我标记为“此处有疑问!”的注释行中,我无法理解为什么在编译过程中没有给出错误。返回类型显然是一个整数数组(如方法定义中指定的),但是我没有将返回的数据分配给任何整数数组,但是程序仍然可以工作。如果我这样做的话,我希望在编译过程中会出现错误,但它成功了。如果有人能帮我解

下面的程序是一个递归程序,用于查找数组的最大值和最小值。(我想!如果它不是一个有效的递归程序,请告诉我。虽然有更简单的方法来查找数组中的最大值和最小值,但我以递归的方式做只是作为练习的一部分!)

该程序工作正常,并产生预期的输出

在我标记为“此处有疑问!”的注释行中,我无法理解为什么在编译过程中没有给出错误。返回类型显然是一个整数数组(如方法定义中指定的),但是我没有将返回的数据分配给任何整数数组,但是程序仍然可以工作。如果我这样做的话,我希望在编译过程中会出现错误,但它成功了。如果有人能帮我解决这个问题,那会很有帮助的!:)

import java.io.*;
类MaxMin\u递归
{
静态整数i=0,最大值=-999,最小值=999;
公共静态void main(字符串[]args)引发IOException
{
BufferedReader B=新的BufferedReader(新的InputStreamReader(System.in));
int[]inp=新的int[6];
System.out.println(“最多输入6个数字”);
对于Java中的(int i=0;i(如C和C++),放弃函数的返回值是完全合法的。编译器没有义务给出任何诊断。

在Java中(如C和C++),放弃函数的返回值是完全合法的。编译器没有义务给出任何诊断。

在Java中(如C和C++)放弃函数的返回值是完全合法的。编译器没有义务给出任何诊断。

在Java(如C和C++)中,放弃函数的返回值是完全合法的。编译器没有义务给出任何诊断

返回类型显然是一个整数数组(如方法定义中指定的),但是我没有将返回的数据分配给任何整数数组,但是程序仍然可以工作

是的,因为忽略方法的返回值并不是一个错误。就编译器而言不是。它很可能代表一个bug,但它是该语言的一个非常有效的用法

例如:

Console.ReadLine(); // User input ignored!
"text".Substring(10); // Result ignored!
TValue GetValueOrDefault<TKey, TValue>(Dictionary<TKey, TValue> dictionary, TKey key)
{
    TValue value;
    dictionary.TryGetValue(key, out value);
    return value;
}
有时我希望它可以用作警告—实际上,当Resharper能够检测到在不使用返回值的情况下调用“纯”方法(没有任何副作用的方法)时,它会发出警告。特别是在现实生活中导致问题的调用:

  • string
    上的方法,例如
    Replace
    Substring
    ,其中用户假定调用该方法会改变现有字符串
  • Stream.Read
    ,其中用户假设他们请求的所有数据都已读取,而实际上他们应该使用返回值查看实际读取的字节数
有时完全可以忽略某个方法的返回值,即使它通常不适用于该方法。例如:

Console.ReadLine(); // User input ignored!
"text".Substring(10); // Result ignored!
TValue GetValueOrDefault<TKey, TValue>(Dictionary<TKey, TValue> dictionary, TKey key)
{
    TValue value;
    dictionary.TryGetValue(key, out value);
    return value;
}
TValue GetValueOrDefault(字典,TKey)
{
t价值;
TryGetValue(键,输出值);
返回值;
}
通常,当您调用
TryGetValue
时,您希望知道是否找到了该键-但在这种情况下,即使找不到该键,
value
也将设置为
default(TValue)
,因此我们仍将返回相同的内容

返回类型显然是一个整数数组(如方法定义中指定的),但是我没有将返回的数据分配给任何整数数组,但是程序仍然可以工作

是的,因为忽略方法的返回值并不是一个错误。就编译器而言不是。它很可能代表一个bug,但它是该语言的一个非常有效的用法

例如:

Console.ReadLine(); // User input ignored!
"text".Substring(10); // Result ignored!
TValue GetValueOrDefault<TKey, TValue>(Dictionary<TKey, TValue> dictionary, TKey key)
{
    TValue value;
    dictionary.TryGetValue(key, out value);
    return value;
}
有时我希望它可以用作警告—实际上,当Resharper能够检测到在不使用返回值的情况下调用“纯”方法(没有任何副作用的方法)时,它会发出警告。特别是在现实生活中导致问题的调用:

  • string
    上的方法,例如
    Replace
    Substring
    ,其中用户假定调用该方法会改变现有字符串
  • Stream.Read
    ,其中用户假设他们请求的所有数据都已读取,而实际上他们应该使用返回值查看实际读取的字节数
有时完全可以忽略某个方法的返回值,即使它通常不适用于该方法。例如:

Console.ReadLine(); // User input ignored!
"text".Substring(10); // Result ignored!
TValue GetValueOrDefault<TKey, TValue>(Dictionary<TKey, TValue> dictionary, TKey key)
{
    TValue value;
    dictionary.TryGetValue(key, out value);
    return value;
}
TValue GetValueOrDefault(字典,TKey)
{
t价值;
TryGetValue(键,输出值);
返回值;
}
通常,当您调用
TryGetValue
时,您希望知道是否找到了该键-但在这种情况下,即使找不到该键,
value
也将设置为
default(TValue)
,因此我们仍将返回相同的内容

返回类型显然是一个整数数组(如方法定义中指定的),但是我没有将返回的数据分配给任何整数数组,但是程序仍然可以工作

是的,因为忽略方法的返回值并不是一个错误。就编译器而言不是。它很可能代表一个bug,但它是该语言的一个非常有效的用法

例如:

Console.ReadLine(); // User input ignored!
"text".Substring(10); // Result ignored!
TValue GetValueOrDefault<TKey, TValue>(Dictionary<TKey, TValue> dictionary, TKey key)
{
    TValue value;
    dictionary.TryGetValue(key, out value);
    return value;
}
有时我希望它可以用作警告—实际上,当Resharper能够检测到在不使用返回值的情况下调用“纯”方法(没有任何副作用的方法)时,它会发出警告。特别是在现实生活中导致问题的调用:

  • string
    上的方法,例如
    Replace
    Substring
    ,其中用户假定调用该方法会改变现有字符串
  • Stream.Read
    ,其中用户假定他们请求的所有数据都已读取,