以下是我正在搞乱的代码的一部分:
import java.util.Scanner;
public class Hwk12 {
public static void main(String args[])
{
final int ARRAY_SIZE = 100;
int numberElements = 0;
char[] array = new char[ARRAY_SIZE];
getInfo(array, numberElements);
System.out.println(array);
System.out.println("1");
System.out.println(numberElements);
System.out.println(array.length);
}
public static void getInfo(char[] letters, int numberElements)
{
Scanner keyboard = new Scanner(System.in);
System.out.print("Please enter some letters or -1 to quit: ");
String input = keyboard.nextLine();
char characterInput = input.charAt(0);
while(!input.equals("-1") && numberElements < letters.length)
{
letters[numberElements] = characterInput;
numberElements++;
System.out.print("Please enter some letters or -1 to quit: ");
input = keyboard.nextLine();
characterInput = input.charAt(0);
}
当我运行并输入内容时,这是输出:
请输入一些字母或-1以退出:a
请输入一些字母或-1以退出:s
请输入一些字母或-1以退出:d
请输入一些字母或-1以退出:f
请输入一些字母或-1以退出:s
请输入一些字母或-1以退出:a
请输入一些字母或-1以退出:d
请输入一些字母或-1以退出:f
请输入一些字母或-1以退出:a
请输入一些字母或-1以退出:s
请输入一些字母或-1以退出:df
请输入一些字母或-1以退出:d
请输入一些字母或-1以退出:-1
asdfsadfasdd
1
0
100
为什么当我在numberElements
方法的while
循环中通过增加它来明确更改它时,它会将getInfo()
显示为0?
答案 0 :(得分:0)
您没有更改main方法中的<%= link_to 'Prev Page', page: -1.to_i %>
<%= link_to 'Next Page', page: +1.to_i %>
defiend。您正在将numberElement
更改为numberElement
作为输入。有两种方法可以实现目标:
getInfo()
中numberElement
的名称更改为其他内容。getInfo()
,并将main方法中的numberElement
值设置为numberElement
返回的值。我还建议您再次查看本地和全局变量之间的区别。
答案 1 :(得分:0)
这是范围。您在方法之外声明了变量。那个var就是一个int。
当你进入方法时,它是一个新的var,它的值被赋值为0.但它在内存中有一个全新的空间。因此无论发生在方法内部的任何事情都不会影响它之外的任何事情。
Int不通过引用传递。
通过引用传递数组。当在方法内部进行更改时,原始声明的变量会发生变异。