我试图在一个单独的方法中访问一个数组,它在初始化。
public void initializeArray()
{
String sentences[] = new String[5];
for(int i=0; i<5; i++)
{
sentences[i] = i+1;
}
}
public void printArray()
{
for(int i=0; i<5; i++)
{
System.out.println(sentences[i]);
}
}
我知道我可以在一个for循环中执行此操作,但有人可以解释如何以这种方式打印数组吗?我需要在一个初始化的单独方法中访问句子数组。我试图在程序的顶部创建一个数组实例,但它给出了一个错误说&#34;局部变量隐藏了一个字段&#34 ;
答案 0 :(得分:1)
我试图在程序的顶部创建一个数组实例,但是 它给了我一个错误说&#34;局部变量隐藏了一个字段&#34;。
您已经有一个实例变量,因此请删除方法中的局部变量:
public void initializeArray()
{
//String Sentences[] = new String[5];
...
}
也不要像在for循环中那样使用魔术数字:
for(int i=0; i<5; i++)//use `sentences.length` instead of `5`
答案 1 :(得分:1)
您在方法 initializeArray()中声明变量 sentence [] 。因此,它不存在于此方法之外。一旦方法结束,它就会消失。其他方法无法使用变量。
您应该在方法之外声明变量,如下所示:
public class Example {
static String sentences[] = new String[5];;
public static void main(String[] args) {
initializeArray();
printArray();
}
public static void initializeArray() {
for (int i = 0; i < 5; i++) {
sentences[i] = "" + (i + 1);
}
}
public static void printArray() {
for (int i = 0; i < 5; i++) {
System.out.println(sentences[i]);
}
}
}
这样,您可以在此课程的任何地方使用它。如果您想在其他地方使用它,请在其之前添加关键字public。
答案 2 :(得分:0)
将printArray
方法的签名更改为
public void printArray(String[] sentences){...}
所以你有
public void initializeArray(){
int arraySize = 5;
String[] sentences = new String[arraySize];
for(int i=0; i<arraySize; i++){
sentences[i] = new String(i+1);
}
printArray(sentences);
}
答案 3 :(得分:0)
使句子成为全局变量或两个函数的参数。
答案 4 :(得分:0)
有两种方法可以从两种方法访问同一个数组:
第一种方法如下:
class TestInstanceVar {
private String[] sentences = new String[5];
public static void main(String[] args) {
TestInstanceVar obj = new TestInstanceVar();
obj.initializeArray();
obj.printArray();
}
public void initializeArray() {
...
}
public void printArray() {
...
}
}
此处,方法访问sentences
作为实例变量,该变量在同一实例上运行的所有方法之间共享。
第二种方法如下:
class TestPassArray {
public static void main(String[] args) {
private String[] sentences = new String[5];
initializeArray(sentences);
printArray(sentences);
}
public static void initializeArray(String[] sentences) {
...
}
public static void printArray(String[] sentences) {
...
}
}
这里的数组是在main
方法中创建的,并作为参数显式传递给初始化和打印方法。请注意,这些方法标记为static
,无需创建对象即可访问。
答案 5 :(得分:0)
让您的initializeArray
返回
public String[] initializeArray () {
...
return sentences;
}
将printArray
更改为
public void printArray (String [] arr) {
...
System.out.println(arr[i]);
}
想象一下像
这样的主要方法String myArr [] = initializeArray ();
printArray (myArr);
答案 6 :(得分:0)
以下内容应该有效:
class MyClass
{
private String sentences[] = new String[5];
public void initializeArray()
{
for(int i=0; i<5; i++)
{
sentences[i] = i+1;
}
}
public void printArray()
{
for(int i=0; i<5; i++)
{
System.out.println(sentences[i]);
}
}
}
答案 7 :(得分:0)
printArray
方法对句子一无所知吗?
Java是按值传递的,并且要求您逐字地将一段数据的值提供给方法,以便方法能够对其进行处理。全局值基本上是每个对象都知道的值。
因此,您需要能够告诉initializeArray
和printArray
这些数据句子应该处理的内容。
// A Calling Function
public void initializeAndPrintStringArray
{
// Get the initialized Sentences Array
String[] sentences = initializeArray();
// Print this Initialized Array
printArray(sentences)
}
// For doing this, you need to change the definitions of your methods
public String[] initializeArray()
{
String[] sentences = new String[5]; // You have a spelling mistake here
for(int i=0; i<5; i++)
{
sentences[i] = i+1;
}
return sentences
}
public void printArray(String[] sentences)
{
// Don't assume the length will always be 5 or something you know beforehand.
for(int i=0; i<sentences.length; i++)
{
System.out.println(sentences[i]);
}
}
答案 8 :(得分:0)
public class Main {
static void add(int[] array1) {
int sum = 0;
for (int i = 0; i < array1.length; i++) {
sum += array1[i];
}
System.out.println(sum);
}
static void sub(int[] array2){
int sum=0;
for(int j=0;j< array2.length;j++) {
sum-=array2[j];
}
System.out.println(sum);
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Enter the number of int that u r gonna enter = ");
int num= input.nextInt();
int Mainarray[]= new int[num];
System.out.println("Enter the elements = ");
for(int i=0;i<num;i++){
Mainarray[i]= input.nextInt();
}
System.out.println("ENTER 1 TO ADD"+"\n"+"ENTER 2 TO SUBTRACT");
int num2= input.nextInt();
if(num2==1) {
add(Mainarray);
}else if(num2==2){
sub(Mainarray);
}
}
}