私の先生は私のコンピュータサイエンスクラス用の追加のプライムプログラムを作成するよう依頼しました。私はすべての私の空の方法を作成し、すべての数学の論理を理解していると信じています。それはこの場合、変数「x」のメインメソッドからvoidメソッドを呼び出すと、voidメソッド内で引数を渡すことができません
で変数を見つけることができません:私は私のメインメソッド内の私のメソッドのインスタンスに引数を渡すしようとすると、しかし、それは私に言ってエラーになります
package additiveprimes; import java.util.Arrays; import java.util.Scanner; /** * * @author talarik048 */ public class AdditivePrimes { public static void main(String[] args){ AdditivePrimes additivePrime = new AdditivePrimes(); additivePrime.userInput(x); additivePrime.isPrime(x); additivePrime.numArray(x); } public void userInput(String x){ Scanner sc = new Scanner(System.in); try{ System.out.println("Please enter a number: "); x = sc.nextLine(); } catch(NumberFormatException e){ System.out.println("Error, try again: "); x = sc.nextLine(); } } public void isPrime(String x){ this.userInput(x); boolean prime = true; int y = Integer.parseInt(x); for(int i = 0; i < y; i++){ if(y % i == 0){ prime = false; break; } if(prime){ System.out.println("Your number is prime..."); } else { System.out.println("Your number is not prime..."); } } } public void numArray(String x){ this.userInput(x); String[] strArray = x.split("\\s+"); boolean prime = true; int[] numbArray = new int[strArray.length]; for(int j = 0; j < strArray.length; j++){ try{ numbArray[j] = Integer.parseInt(strArray[j]); } catch(NumberFormatException e){ System.out.println("ERROR"); } for(int i = 0; i < numbArray.length; i++){ int sum = (Arrays.stream(numbArray).sum()); if(sum % i == 0){ prime = false; break; } if(prime){ System.out.println("Your number is an additive prime..."); } else { System.out.println("Your number is not an additive prime..."); } } } } }
"x"は定義されていません。 –
あなたがしようとしていることは動作しません。 https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-valueを読んでください。あなたのuserInputメソッドは**それらを使用できるように**入力を返すべきです。そのメソッドにStringを渡してから、その文字列をuserInputメソッドの中で変更し、そのメソッドの外にその効果を持たせることはできません。 –
ようこそ。将来的には、問題を再現する[MCVE]またはSSCCE(http://sscce.org)を投稿してください。 これにより、役に立つ回答が得られる可能性が高くなります(問題の発見に役立つ場合もあります)。 – c0der