调用某些方法 import java.util.Scanner; 导入javax.swing.JOptionPane; 公共类硬件{ 公共静态void main(字符串[]args){ while(重试==true){ getGuess(); getBet(余额); checkGuess(getGuess()); updateBal(猜测结果,betParsed); 收益(平衡); } } 公共静态字符串getGuess(){ //猜测输入 System.out.println(“猜测:(H/T”); 扫描仪输入=新扫描仪(系统输入); 布尔值validInput=false; 字符串猜测=null; while(validInput==false){ 猜测=in.next(); 如果(猜测等于(“H”)|猜测等于(“T”)){ validInput=true; }否则{ showMessageDialog(null,“无效输入:”+猜测); } } 返回猜测; } 公共静态布尔checkGuess(字符串sideGuess){ //检查侧面是否正确 double num=Math.round(Math.random()); 布尔猜测结果; 如果(num==0&&sideGuess.equals(“H”)){ System.out.println(“正确,侧面为:H”); 猜测结果=真; 返回true; }else如果(num==1&&sideGuess.equals(“T”)){ System.out.println(“正确,侧面为:T”); 猜测结果=真; 返回true; }否则{ System.out.println(“不正确”); 猜测结果=假; 返回false; } } 公共静态双getBet(双余额){ //从用户检索赌注 扫描仪输入=新扫描仪(系统输入); 字符串输入=null; 双betParsed=0; 布尔值validInput=false; while(validInput==false){ betInput=in.next(); 试一试{ betParsed=Double.parseDouble(betInput); } 捕获(数字格式){ showMessageDialog(null,“输入:”+betInput); } 如果(betParsed>balance | | betParsed
编辑代码 我试图将一些已定义的变量传递到一些方法中,但似乎无法使用它们 我怎样才能解决这个问题 它们似乎不是“本地的”,我无法理解,因为它们是在方法中定义的。 我一定在想它。方法应该是这样的,只有一个参数:调用某些方法 import java.util.Scanner; 导入javax.swing.JOptionPane; 公共类硬件{ 公共静态void main(字符串[]args){ while(重试==true){ getGuess(); getBet(余额); checkGuess(getGuess()); updateBal(猜测结果,betParsed); 收益(平衡); } } 公共静态字符串getGuess(){ //猜测输入 System.out.println(“猜测:(H/T”); 扫描仪输入=新扫描仪(系统输入); 布尔值validInput=false; 字符串猜测=null; while(validInput==false){ 猜测=in.next(); 如果(猜测等于(“H”)|猜测等于(“T”)){ validInput=true; }否则{ showMessageDialog(null,“无效输入:”+猜测); } } 返回猜测; } 公共静态布尔checkGuess(字符串sideGuess){ //检查侧面是否正确 double num=Math.round(Math.random()); 布尔猜测结果; 如果(num==0&&sideGuess.equals(“H”)){ System.out.println(“正确,侧面为:H”); 猜测结果=真; 返回true; }else如果(num==1&&sideGuess.equals(“T”)){ System.out.println(“正确,侧面为:T”); 猜测结果=真; 返回true; }否则{ System.out.println(“不正确”); 猜测结果=假; 返回false; } } 公共静态双getBet(双余额){ //从用户检索赌注 扫描仪输入=新扫描仪(系统输入); 字符串输入=null; 双betParsed=0; 布尔值validInput=false; while(validInput==false){ betInput=in.next(); 试一试{ betParsed=Double.parseDouble(betInput); } 捕获(数字格式){ showMessageDialog(null,“输入:”+betInput); } 如果(betParsed>balance | | betParsed,java,methods,Java,Methods,编辑代码 我试图将一些已定义的变量传递到一些方法中,但似乎无法使用它们 我怎样才能解决这个问题 它们似乎不是“本地的”,我无法理解,因为它们是在方法中定义的。 我一定在想它。方法应该是这样的,只有一个参数: import java.util.Scanner; import javax.swing.JOptionPane; public class HW { public static void main(String[] args){ while (retry == true){
import java.util.Scanner;
import javax.swing.JOptionPane;
public class HW {
public static void main(String[] args){
while (retry == true){
getGuess();
getBet(balance);
checkGuess(getGuess());
updateBal(guessResult, betParsed);
goAgain(balance);
}
}
public static String getGuess(){
//Guess input
System.out.println("Guess: (H/T");
Scanner in = new Scanner(System.in);
boolean validInput = false;
String guess = null;
while (validInput == false){
guess = in.next();
if (guess.equals("H") || guess.equals("T")){
validInput = true;
} else {
JOptionPane.showMessageDialog(null, "Invalid Input: " + guess);
}
}
return guess;
}
public static boolean checkGuess(String sideGuess){
//Checks if the side is correct
double num = Math.round(Math.random());
boolean guessResult;
if (num == 0 && sideGuess.equals("H")){
System.out.println("Correct. The side was: H");
guessResult = true;
return true;
} else if (num == 1 && sideGuess.equals("T")){
System.out.println("Correct. The side was: T");
guessResult = true;
return true;
} else {
System.out.println("Incorrect.");
guessResult = false;
return false;
}
}
public static double getBet(double balance){
//Retrieves a bet from the user
Scanner in = new Scanner(System.in);
String betInput = null;
double betParsed = 0;
boolean validInput = false;
while (validInput == false){
betInput = in.next();
try {
betParsed = Double.parseDouble(betInput);
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Invlaid Input: " + betInput);
}
if (betParsed > balance || betParsed < 0){
JOptionPane.showMessageDialog(null, "Invalid Input! You have: $" + balance);
} else {
validInput = true;
}
}
return betParsed;
}
public static double updateBal(boolean checkGuess, double getBet){
//Updates the balance based on the bet
double balance = 0;
if (checkGuess == true){
balance = balance + getBet * 2;
System.out.println("Your balance is now: $" + balance);
} else {
System.out.println("Your balance is now: $" + balance);
balance = balance - getBet;
}
return balance;
}
public static boolean goAgain(double balance){
//Determines if new play is needed
Scanner in = new Scanner(System.in);
boolean validInput = false;
String goAgainInput = null;
boolean retry;
while (validInput == false){
System.out.println("Go again? (Y/N)");
goAgainInput = in.next();
if (goAgainInput.equals("Y") || goAgainInput.equals("N")){
validInput = true;
} else {
JOptionPane.showMessageDialog(null, "Invalid Input: " + goAgainInput);
}
}
if (goAgainInput.equals("Y")){
retry = true;
return true;
} else {
System.out.println("You ended with: $" + balance);
retry = false;
return false;
}
}
}
对于第二个问题,updateBal()
接收到两个参数,但您没有传递任何参数。因此编译器正确地抱怨您应该根据您想要做的事情传递它们:
public static void main(String[] args) {
关于向方法传递参数,这是错误的:
updateBal(false, 0); // pass the right values
你看,变量guessResult
和betParsed
是定义它们的方法的本地变量,你不能在外部使用它们。这些方法返回一个值,该值丢失了,因为你没有使用或存储它。这两个问题都有一个简单的解决方案-声明方法本地的新变量:
getBet(balance);
checkGuess(getGuess());
updateBal(guessResult, betParsed);
同样,同样的问题在这里,在主循环中:
double betParsed = getBet(balance);
boolean guessResult = checkGuess(getGuess());
updateBal(guessResult, betParsed);
一句话:您必须对方法返回的值执行某些操作,并且在方法内部声明的变量在其外部将不可见。方法应如下所示,只有一个参数:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class HW {
public static void main(String[] args){
while (retry == true){
getGuess();
getBet(balance);
checkGuess(getGuess());
updateBal(guessResult, betParsed);
goAgain(balance);
}
}
public static String getGuess(){
//Guess input
System.out.println("Guess: (H/T");
Scanner in = new Scanner(System.in);
boolean validInput = false;
String guess = null;
while (validInput == false){
guess = in.next();
if (guess.equals("H") || guess.equals("T")){
validInput = true;
} else {
JOptionPane.showMessageDialog(null, "Invalid Input: " + guess);
}
}
return guess;
}
public static boolean checkGuess(String sideGuess){
//Checks if the side is correct
double num = Math.round(Math.random());
boolean guessResult;
if (num == 0 && sideGuess.equals("H")){
System.out.println("Correct. The side was: H");
guessResult = true;
return true;
} else if (num == 1 && sideGuess.equals("T")){
System.out.println("Correct. The side was: T");
guessResult = true;
return true;
} else {
System.out.println("Incorrect.");
guessResult = false;
return false;
}
}
public static double getBet(double balance){
//Retrieves a bet from the user
Scanner in = new Scanner(System.in);
String betInput = null;
double betParsed = 0;
boolean validInput = false;
while (validInput == false){
betInput = in.next();
try {
betParsed = Double.parseDouble(betInput);
}
catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Invlaid Input: " + betInput);
}
if (betParsed > balance || betParsed < 0){
JOptionPane.showMessageDialog(null, "Invalid Input! You have: $" + balance);
} else {
validInput = true;
}
}
return betParsed;
}
public static double updateBal(boolean checkGuess, double getBet){
//Updates the balance based on the bet
double balance = 0;
if (checkGuess == true){
balance = balance + getBet * 2;
System.out.println("Your balance is now: $" + balance);
} else {
System.out.println("Your balance is now: $" + balance);
balance = balance - getBet;
}
return balance;
}
public static boolean goAgain(double balance){
//Determines if new play is needed
Scanner in = new Scanner(System.in);
boolean validInput = false;
String goAgainInput = null;
boolean retry;
while (validInput == false){
System.out.println("Go again? (Y/N)");
goAgainInput = in.next();
if (goAgainInput.equals("Y") || goAgainInput.equals("N")){
validInput = true;
} else {
JOptionPane.showMessageDialog(null, "Invalid Input: " + goAgainInput);
}
}
if (goAgainInput.equals("Y")){
retry = true;
return true;
} else {
System.out.println("You ended with: $" + balance);
retry = false;
return false;
}
}
}
对于第二个问题,updateBal()
接收到两个参数,但您没有传递任何参数。因此编译器正确地抱怨您应该根据您想要做的事情传递它们:
public static void main(String[] args) {
关于向方法传递参数,这是错误的:
updateBal(false, 0); // pass the right values
你看,变量guessResult
和betParsed
是定义它们的方法的本地变量,你不能在外部使用它们。这些方法返回一个值,该值丢失了,因为你没有使用或存储它。这两个问题都有一个简单的解决方案-声明方法本地的新变量:
getBet(balance);
checkGuess(getGuess());
updateBal(guessResult, betParsed);
同样,同样的问题在这里,在主循环中:
double betParsed = getBet(balance);
boolean guessResult = checkGuess(getGuess());
updateBal(guessResult, betParsed);
一句话:您必须对方法返回的值执行某些操作,并且在方法内部声明的变量在方法外部将不可见。首先,您的主方法只能有一个参数,即名为args的字符串数组(或者可以随意调用它),但它不能有两个参数。接下来,如果修复后出现任何其他错误,最好将它们发布到此处。此外,您的代码似乎没有IDE,如果没有IDE,您就不会经常编译或测试代码,这是一个大问题。如果您不能使用IDE立即警告您编译错误,则必须编译在尝试添加更多代码之前,请经常检查和测试您的代码,并修复所有错误。\n好的,这是可行的。我尝试做的是首先创建一个框架程序,一个