如何解决如何获取在if else语句中启动的值以在该语句外使用?
你好,我是新手,我很难做这个程序。我想知道是否有任何变通办法可以使else语句中的值在语句本身之外使用,或以其他任何方式使其工作。该程序假设在数组中有10个奇数时停止运行,我尝试通过将其放入do while循环中,并在else语句检测到奇数但k的值的情况下将变量k分配为加1的值仅在else语句中可用。
public static void main(String[] args) {
Scanner sc = new Scanner(system.in);
int num[] = new int[100];
System.out.println("This program stops when 10 odd numbers are entered.");
do {
int j = 0;
int k = 0;
for (int i = 0; i <= num.length; i++) {
System.out.println("Please enter element " + i);
num[j] = sc.nextInt();
if (j % 2 == 0)
System.out.println("Entered number is even");
else
k = k + 1;
}
} while (k != 11);
}
}
解决方法
代码中的问题是变量k
的范围,该变量仅在do-while循环内可用,而while (k != 11);
在循环外。
因此,必须在循环外部声明k
。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num[] = new int[100];
int k = 0;
System.out.println("This program stops when 10 odd numbers are entered.");
do {
int j = 0;
for (int i = 0; i <= num.length; i++) {
System.out.println("Please enter element " + i);
num[j] = sc.nextInt();
if (j % 2 == 0)
System.out.println("Entered number is even");
else
k = k + 1;
}
} while (k != 11);
}
,
在java
中,您无法从父范围访问在内部范围{ }
中声明的变量。这意味着在此示例中:
if(x==2) {
int k = 10;
} else {
int j = 300;
}
您无法访问k
或j
。
在您的代码中,由于k
是在do while
范围内声明的,因此可以从if else
语句中 对其进行访问。问题在于,由于k
是在do while
范围内声明的,因此,每次执行do
时,您的k
都会用值0
重新定义。
解决方案是在父范围(即k
范围)中声明main
:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num[] = new int[100];
int k = 0;
int j = 0;
System.out.println("This program stops when 10 odd numbers are entered.");
do {
for (int i = 0; i <= num.length; i++) {
System.out.println("Please enter element " + i);
num[j] = sc.nextInt();
if (num[j] % 2 == 0)
System.out.println("Entered number is even");
else
k = k + 1;
j = j + 1;
}
} while (k != 11);
}
}
此外,我认为您忘了增加j
,它也会在每个while
中重新定义,并且在if
语句中您检查j % 2 == 0
和不是来自用户的实际数字。祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。