Java 循环和在变量中存储数据有问题
我试图完成的程序需要从用户那里读入三个数字,然后将它们存储在变量Java 循环和在变量中存储数据有问题,java,loops,variables,storing-data,Java,Loops,Variables,Storing Data,我试图完成的程序需要从用户那里读入三个数字,然后将它们存储在变量num1、num2和num3中,以便在步骤2和3中使用它们。我遇到的问题是,当程序在用户输入他们的号码后循环,并试图进入第2步或第3步时,它说必须先完成第1步。 这是我目前的代码: static Scanner console = new Scanner(System.in); public static void main(String[] args) { // TODO Auto-generat
num1
、num2
和num3
中,以便在步骤2和3中使用它们。我遇到的问题是,当程序在用户输入他们的号码后循环,并试图进入第2步或第3步时,它说必须先完成第1步。
这是我目前的代码:
static Scanner console = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
int num1;
int num2;
int num3;
int input;
do {
boolean opt1Done = false;
System.out.println("Select your next step");
System.out.println("1: Enter three numbers between 1 and 100.");
System.out.println("2: Order your number in ascending order");
System.out.println("3: Determine if the three inputs form a triangle");
System.out.println("4: Exit");
int answer = console.nextInt();
num1 = console.nextInt();
num2 = console.nextInt();
num3 = console.nextInt();
input = console.nextInt();
if (answer == 1) {
//do whatever for option 1
System.out.println("Enter a value for num1 between 1 and 100.");
System.out.println("Enter a value for num2 between 1 and 100.");
System.out.println("Enter a value for num3 between 1 and 100.");
opt1Done = true;
} else if (answer == 2) {
if (opt1Done) {
//...... do whatever to order the numbers
int[] arraynum;
arraynum = new int[3];
arraynum[0] = num1;
arraynum[1] = num2;
arraynum[2] = num3;
Arrays.sort(arraynum);
int i;
for (i = 0; i < arraynum.length; i++) {
System.out.println("num:" + arraynum[i]);
}
} else {
System.out.println("you must complete Step 1 before Step 2");
}
} else if (answer == 3) {
if (opt1Done) {
//... do whatever to determine if triangle or not
if (num1 + num2 > num3 && num1 + num3 > num2 && num2 + num3 > num1) {
System.out.print("TRIANGLE");
} else {
System.out.print("NO TRIANGLE");
}
} else {
System.out.println("you must complete Step 1 before Step 3");
}
if (answer == 4) {
System.exit(0);
}
}
} while (input != 4);
}
}
静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int num1;
int num2;
int num3;
int输入;
做{
布尔值opt1Done=false;
System.out.println(“选择下一步”);
System.out.println(“1:输入三个介于1和100之间的数字”);
System.out.println(“2:按升序排列您的号码”);
System.out.println(“3:确定三个输入是否形成三角形”);
System.out.println(“4:退出”);
int answer=console.nextInt();
num1=console.nextInt();
num2=console.nextInt();
num3=console.nextInt();
input=console.nextInt();
如果(答案=1){
//为选项1做任何事
System.out.println(“为num1输入一个介于1和100之间的值”);
System.out.println(“为num2输入一个介于1和100之间的值”);
System.out.println(“为num3输入一个介于1和100之间的值”);
opt1Done=true;
}否则如果(答案=2){
如果(opt1Done){
//……尽一切努力订购这些号码
int[]arraynum;
arraynum=新整数[3];
arraynum[0]=num1;
arraynum[1]=num2;
arraynum[2]=num3;
Arrays.sort(arraynum);
int i;
对于(i=0;inum3&&num1+num3>num2&&num2+num3>num1){
系统输出打印(“三角形”);
}否则{
系统输出打印(“无三角形”);
}
}否则{
System.out.println(“您必须在步骤3之前完成步骤1”);
}
如果(答案=4){
系统出口(0);
}
}
}while(输入=4);
}
}
我需要添加另一个循环还是更改已有的循环?您不需要在指令上循环。每次完成一个步骤后,程序就会结束,下次运行时,之前所做的任何操作都不会被保存 您需要一个外部循环来迭代命令:
public static void main(String[] args) {
int num1;
int num2;
int num3;
boolean opt1Done = false;
while (true) {
System.out.println("Select your next step");
System.out.println("1: Enter three numbers between 1 and 100.");
System.out.println("2: Order your number in ascending order");
System.out.println("3: Determine if the three inputs form a triangle");
System.out.println("4: Exit");
//rest of your code here
}
}
似乎您必须循环,直到用户选择选项4。我没有看到任何包含提问选项的循环。您将条件放在了错误的位置。 正如我所想的,首先检查用户的答案,然后将第一个条件中的3个数字作为
int answer = console.nextInt();
if (answer == 1) {
//do whatever for option 1
System.out.println("Enter a value for num1 between 1 and 100.");
num1 = console.nextInt();
System.out.println("Enter a value for num2 between 1 and 100.");
num2 = console.nextInt();
System.out.println("Enter a value for num3 between 1 and 100.");
num3 = console.nextInt();
opt1Done = true;
}
把这条线移到环外
boolean opt1Done = false;
将布尔声明opt1Done和数字移出循环,并在每次用户提示后读取输入
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class ReadChar {
public ReadChar() {
// TODO Auto-generated constructor stub
}
static Scanner console = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
int num1 = 0;
int num2 = 0;
int num3 = 0;
boolean opt1Done = false;
while (true) {
System.out.println("Select your next step");
System.out.println("1: Enter three numbers between 1 and 100.");
System.out.println("2: Order your number in ascending order");
System.out
.println("3: Determine if the three inputs form a triangle");
System.out.println("4: Exit");
int answer = console.nextInt();
if (answer == 1) {
// do whatever for option 1
System.out.println("Enter a value for num1 between 1 and 100.");
num1 = console.nextInt();
System.out.println("Enter a value for num2 between 1 and 100.");
num2 = console.nextInt();
System.out.println("Enter a value for num3 between 1 and 100.");
num3 = console.nextInt();
opt1Done = true;
} else if (answer == 2) {
if (opt1Done) {
// ...... do whatever to order the numbers
int[] arraynum;
arraynum = new int[3];
arraynum[0] = num1;
arraynum[1] = num2;
arraynum[2] = num3;
Arrays.sort(arraynum);
int i;
for (i = 0; i < arraynum.length; i++) {
System.out.println("num:" + arraynum[i]);
}
} else {
System.out
.println("you must complete Step 1 before Step 2");
}
} else if (answer == 3) {
if (opt1Done) {
// ... do whatever to determine if triangle or not
if (num1 + num2 > num3 && num1 + num3 > num2
&& num2 + num3 > num1) {
System.out.print("TRIANGLE");
} else {
System.out.print("NO TRIANGLE");
}
} else {
System.out
.println("you must complete Step 1 before Step 3");
}
}
if (answer == 4) {
System.exit(0);
}
}
}
}
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.util.array;
导入java.util.Scanner;
公共类ReadChar{
公共ReadChar(){
//TODO自动生成的构造函数存根
}
静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int num1=0;
int num2=0;
int num3=0;
布尔值opt1Done=false;
while(true){
System.out.println(“选择下一步”);
System.out.println(“1:输入三个介于1和100之间的数字”);
System.out.println(“2:按升序排列您的号码”);
系统输出
.println(“3:确定三个输入是否形成三角形”);
System.out.println(“4:退出”);
int answer=console.nextInt();
如果(答案=1){
//为选项1做任何事
System.out.println(“为num1输入一个介于1和100之间的值”);
num1=console.nextInt();
System.out.println(“为num2输入一个介于1和100之间的值”);
num2=console.nextInt();
System.out.println(“为num3输入一个介于1和100之间的值”);
num3=console.nextInt();
opt1Done=true;
}否则如果(答案=2){
如果(opt1Done){
//……尽一切努力订购这些号码
int[]arraynum;
arraynum=新整数[3];
arraynum[0]=num1;
arraynum[1]=num2;
arraynum[2]=num3;
Arrays.sort(arraynum);
int i;
对于(i=0;inum3&&num1+num3>num2
static Scanner console = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
int num1 = 0;
int num2 = 0;
int num3 = 0;
boolean opt1Done = false;
while(true) {
System.out.println("Select your next step");
System.out.println("1: Enter three numbers between 1 and 100.");
System.out.println("2: Order your number in ascending order");
System.out.println("3: Determine if the three inputs form a triangle");
System.out.println("4: Exit");
int answer = console.nextInt();
if (answer == 1) {
// do whatever for option 1
System.out.println("Enter a value for num1 between 1 and 100.");
num1 = console.nextInt();
System.out.println("Enter a value for num2 between 1 and 100.");
num2 = console.nextInt();
System.out.println("Enter a value for num3 between 1 and 100.");
num3 = console.nextInt();
opt1Done = true;
} else if (answer == 2) {
if (opt1Done) {
// ...... do whatever to order the numbers
int[] arraynum;
arraynum = new int[3];
arraynum[0] = num1;
arraynum[1] = num2;
arraynum[2] = num3;
Arrays.sort(arraynum);
int i;
for (i = 0; i < arraynum.length; i++) {
System.out.println("num:" + arraynum[i]);
}
} else {
System.out.println("you must complete Step 1 before Step 2");
}
} else if (answer == 3) {
if (opt1Done) {
// ... do whatever to determine if triangle or not
if (num1 + num2 > num3 && num1 + num3 > num2
&& num2 + num3 > num1) {
System.out.print("TRIANGLE");
} else {
System.out.print("NO TRIANGLE");
}
} else {
System.out.println("you must complete Step 1 before Step 3");
}
} else if (answer == 4) {
System.exit(0);
}
}
}
boolean opt1Done = false;
int num1, num2, num3;
while(answer != 4){
System.out.println("Select your next step");
System.out.println("1: Enter three numbers between 1 and 100.");
System.out.println("2: Order your number in ascending order");
System.out.println("3: Determine if the three inputs form a triangle");
System.out.println("4: Exit");
int answer = console.nextInt();
if (answer == 1) {
//do whatever for option 1
System.out.println("Enter a value for num1 between 1 and 100.");
num1 = console.nextInt();
System.out.println("Enter a value for num2 between 1 and 100.");
num2 = console.nextInt();
System.out.println("Enter a value for num3 between 1 and 100.");
num3 = console.nextInt();
opt1Done = true;
}
...
if (answer == 4) {
System.exit(0);
}
}
}
}