所以我正在研究for循环和嵌套for循环。所以我需要坚持这些作为我的主要功能。
我遇到了一个问题。我可以想到我如何解决它的逻辑......但我无法想象我是如何使用for循环/嵌套for循环。
我必须以10行的方式打印Ascii代码
示例:
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
(从32-122开始)
到目前为止,这是我的代码:
public class chars{
public static void main(String[]args){
for( int j = 32; j < 122; j++){
System.out.print((char)j);
//Once above loop is performed 10*...execute a new line..using a for loop..??
System.out.println();
}
}
}
答案 0 :(得分:4)
你的外循环应该控制你所依赖的行,而内循环应该是什么列。因此,只有外部循环看起来像这样(有9行):
for (int i = 1; i <= 9; i++)
{
System.out.println("");
}
这将打印9个换行符,为您提供9行。
现在,你的列逻辑进入了内部,但是在println之前。
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 10; j++)
{
char print = (char)((i * 10) + 32 + j);
System.out.print(print);
}
System.out.println("");
}
这利用一个小的数学技巧来生成序列的数量。第1行= 32至41,2 = 42至51等
另请注意,这比其他可能的答案略显冗长,因为我使用了像你问的嵌套循环。
答案 1 :(得分:2)
直接的方法可能是使用QuakeCore建议的if语句。代码看起来像下面这样:
public static void main(String[] args) {
for (int j = 32; j < 122; j++) {
System.out.print((char)j);
if (j % 10 == 1) {
System.out.println();
}
}
}
在if条件下使用模数函数时会留下一些难看的代码。原因是我们从数字32开始并从它们递增,因此我们得到 j%10 == 1 而不是更好的东西,例如 j%10 == 0 < / em>的
但是,你的问题表明你希望用for循环中的For循环解决它,让我认为这是一项学校任务。这可以通过将循环视为要在2D空间内执行的函数来解决。这样第一个for循环处理行,而内部for循环处理列(或分别是y和x空格)。由此我们可以解决以下问题:
public static void main(String[] args) {
// Increment row/counter by 10
for (int row = 32; row < 122; row += 10) {
for (int col = 0; col < 10; col++) {
System.out.print((char)(row + col));
}
System.out.println();
}
}
答案 2 :(得分:2)
for
循环的语法是:
for
(
初始化 ;
终止条件 ;
增量 {{ 1}} body
但是,上面斜体字的每个项目都是可选的。初始化和增量部分可以有多个组件,用逗号分隔。
因为你知道字符总数是10的倍数,所以我会这样做:
)
请注意,如果字符总数不是10的倍数,那么内部循环可能会打印一些额外内容,因为外部循环的条件仅每10个字符检查一次。
答案 3 :(得分:0)
使用for循环/嵌套for循环
试试这个 -
public static void main(String[] args) {
for (int j = 32; j < 122; j++) {
System.out.print((char) j);
if((j-32)%10==0){
System.out.println();
}
}
}
此处内部条件将在您打印10个值时更改行
答案 4 :(得分:0)
这将连续10次打印每个char(使用嵌套for循环):
class DB {
public static function connect($host, $db_name, $db_username, $db_password) {
try {
$dbh = new PDO('mysql:host=' . $host . ';dbname=' . $db_name, $db_username, $db_password);
$dbh->exec("set names utf8");
return $dbh;
} catch (PDOException $e) {
die('Error Connecting To DataBase: ' . $e);
}
}
}
$filtered_keywords = filter_input(INPUT_GET, 'keywords');
$query = "SELECT * FROM search WHERE 1=1 ";
$keywords = explode(" ", $filtered_keywords);
foreach ($keywords as $keyword) {
$query .= " OR keywords LIKE '%$keyword%' ";
}
$dbh = DB::connect('localhost', 'db_name', 'root', '');
$query .=";";
$sth = $dbh->prepare($query);
$rows = $sth->fetchAll(PDO::FETCH_ASSOC);
$output = '';
foreach ($rows as $row) {
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$key = $row['keywords'];
$link = $row['link'];
$output .= "<h2><a href='$link'>$title</a></h2>
$descripton";
}
print(strlen($output)>0?$output:"No results found for \"<b>$keywords</b>\"");
答案 5 :(得分:0)
如果你必须使用嵌套循环,那么这样的东西可能会起作用:
int lineLength = 10;
int lineCount = (122 - 32) / lineLength;
for (int line = 0; line < lineCount; line++) {
for (int column = 0; column < lineLength; column++) {
int index = (line * lineLength) + column;
System.out.print((char)(32 + index) + " ");
}
System.out.println();
}