import java.util.Scanner;
public class Project2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String word;
String c;
int x, count, count1;
System.out.println("Please enter a word:");
word=in.nextLine();
x=word.length();
for(count=0;count<x;count++) {
count1=x;
count1--;
c=word.substring((count1)-1,count1);
System.out.println(c);
}
}
}
该程序所做的全部工作是打印出用户输入的单词的倒数第二个字符。我对为什么这样做感到困惑,并想知道如何向后打印整个单词。请有人帮忙。
答案 0 :(得分:2)
您不需要循环来反转字符串。
Scanner in = new Scanner(System.in);
System.out.println(new StringBuilder(in.nextLine()).reverse());
如果要反向打印字符,请忘记子字符串。
String word = in.nextLine();
int x = word.length();
for(count = x - 1; count >= 0; count--) {
System.out.println(word.charAt(count));
}
答案 1 :(得分:1)
将count1=x;
分配带出循环。还要在打印字母后加上count--;
。
答案 2 :(得分:1)
您是正确的,直到SELECT COUNT(1)
FROM `bigquery-public-data.bitcoin_blockchain.transactions`,
UNNEST(outputs) AS o
WHERE o.output_pubkey_base58 = '3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r'
。它是从倒数第二个字符开始打印,因为您一直将count1的值设置为x = word.length()
的长度,并减去了1。因此,它始终引用倒数第二个字符。要解决此问题,请执行以下操作:
word
答案 3 :(得分:1)
如果您想通过遍历以困难的方式进行操作,请进行以下更改。
+----+-------+---------------------+---------------------+---------------------+----------------------+-------------+
| EQ | State | EQ_inTIME | EQ_outTIME | LOAD_inTIME | LOAD_outTIME | GapDuration |
+----+-------+---------------------+---------------------+---------------------+----------------------+-------------+
| A1 | UP | 2018-11-13 08:00:00 | 2018-11-13 10:00:00 | 2018-11-13 08:20:00 | 2018-11-13 09:43:00 | 20 |
| A1 | UP | 2018-11-13 08:00:00 | 2018-11-13 10:00:00 | 2018-11-13 08:22:30 | 2018-11-13 09:55:00 | 0 |
| A1 | UP | 2018-11-13 08:00:00 | 2018-11-13 10:00:00 | 2018-11-13 08:30:00 | 2018-11-13 10:11:00 | 0 |
| A1 | DOWN | 2018-11-13 10:00:00 | 2018-11-13 10:35:00 | 2018-11-13 08:30:00 | 2018-11-13 10:11:00 | 0 |
| A1 | UP | 2018-11-13 10:35:00 | 2018-11-13 15:11:00 | 2018-11-13 11:00:00 | 2018-11-13 11:51:00 | 25 |
| A1 | UP | 2018-11-13 10:35:00 | 2018-11-13 15:11:00 | 2018-11-13 11:25:00 | 2018-11-13 11:55:00 | 0 |
| A1 | UP | 2018-11-13 10:35:00 | 2018-11-13 15:11:00 | 2018-11-13 12:05:00 | *2018-11-13 14:11:00 | 10 |
| A1 | UP | 2018-11-13 10:35:00 | 2018-11-13 15:11:00 | 2018-11-13 12:25:00 | 2018-11-13 13:05:00 | 0 |
| A1 | UP | 2018-11-13 10:35:00 | 2018-11-13 15:11:00 | 2018-11-13 13:45:00 | 2018-11-13 15:11:00 | 40 |
| A2 | UP | 2018-11-13 08:00:00 | 2018-11-13 14:05:00 | 2018-11-13 08:00:00 | 2018-11-13 14:05:00 | 0 |
+----+-------+---------------------+---------------------+---------------------+----------------------+-------------+
更新:您可以使用for(count=x;count>=0;count--) {
System.out.println(word.substring(count - 1,count));
}
轻松地将角色移到某个位置。
charAt#String
答案 4 :(得分:1)
每次循环运行时,您都将count1值重置为x(count1 = x)。因此c将始终是相同的值。 为此,请尝试将count1 = x移出循环,以便每次循环运行时,count1值都会按预期减少,并提供所需的子字符串。
答案 5 :(得分:1)
进入循环for(count=0;count<x;count++)
每个循环您都做相同的事情
count1=x;
count1--;
c=word.substring((count1)-1,count1);
System.out.println(c);
此块与循环无关!
这就是为什么您倒数第二个字符!
要解决此问题:
解决方案1 :(只需反转字符串)
word=in.nextLine();
System.out.println(new StringBuilder(word).reverse());
或解决方案2 :(使用代码循环)
x=word.length();
for(count= x-1; count >= 0; count--) {
c = word.substring((count)-1, count);
System.out.print(c);
}