今天的最后一个问题...明天我会回来的......我有很多要跟进...
我正在寻找Reilly Java文本 - 谈论反控制循环模式..(无论什么语言......)
用于计数器控制循环(for,while等)和嵌套循环的作者...使用!=进行测试...现在我意识到!=用于某些具有事件控制循环的情况 - 如Sentinel或EOF类型循环 - 但对我来说 - 使用它与计数器控制循环是一个坏主意...很容易出错...
例子:
x = 0;
while (x != 100) {
y = 0;
while (y != 100) {
...
y++;
}
x++;
}
Run Code Online (Sandbox Code Playgroud)
如果说...使用其他关系运营商会更好吗?
x = 0;
while (x < 100) { //or even better some defined constant...
y = 0;
while (y < 100) {
...
y++;
}
x++;
}
Run Code Online (Sandbox Code Playgroud)
从我所看到的通常是文本中提出的方式..classes.etc ..
再一次 - 你是否会认为这很糟糕 - 或者只是采取不同的方式......谢谢......
从Java Malik教科书中确定一个数字是否可以被11整除.
代码解决方案:
import java.util.*;
public class Divby11
{
static Scanner console = new Scanner(System.in);
public static void main (String[] args)
{
int num, temp, sum;
char sign;
System.out.print("Enter a positive integer: ");
num = console.nextInt();
System.out.println();
temp = num;
sum = 0;
sign = '+';
do
{
switch (sign)
{
case '+' :
sum = sum + num % 10;
sign = '-';
break;
case '-' :
sum = sum - num % 10;
sign = '+';
}
num …
Run Code Online (Sandbox Code Playgroud) 来自Schaums C++文本
删除goto-说使用标志
代码段:
const int N2 = 5;
int i, j, k;
for (i = 0; i < N2; i++)
{ for (j = 0; j < N2; j++)
{ for (k = 0; k < N2; k++)
if (i + j + k > N2)
goto esc;
else
cout << i + j + k << " ";
cout << "* ";
}
esc: cout << "." << endl;
}
Run Code Online (Sandbox Code Playgroud)
解决方案:
const int 5;
int i, j, k; …
Run Code Online (Sandbox Code Playgroud) 正在从ACM编程竞赛档案中搜索并找到了一个coconuts程序的解决方案:它有一个转到它 - 我该如何消除它?是否有一个模板或程序要遵循这样做.谢谢
/*
1997 East-Central ACM regional programming contest
Held on November 8, 1997
Coconuts, Revisited -- Problem 3
Sample solution by Ed Karrels, Ed@tool.com
November 1997
*/
#include <stdio.h>
/* return 1 if this number of coconuts can be divided up
properly between this number of people */
int SplitCoco(long n_coco, long n_people) {
long i;
for (i=0; i<n_people; i++) {
/* check that the coconuts divide by the number of people
plus one remainder */
if (n_coco …
Run Code Online (Sandbox Code Playgroud)