让我说我有字符串:'救火车'。然后我将该字符串分成单个字母并将它们放入一个名为T的数组中。所以现在T []看起来像{f,i,r,e,t,r,u,c,k}。我怎么才能打印偶数字符所以我的打印语句看起来像'frtuk'而奇怪的看起来像'ierc'。这是我到目前为止所得到的:
import java.util.Scanner;
import java.util.Arrays;
public class StringFun {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String even_odd = sc.next();
char[] t = even_odd.toCharArray();
System.out.println(Arrays.toString(t));
//I can't get this next part to work.
for(int i = t[0]; i < t.length; i = i + 2){
System.out.println(Arrays.toString(t[i]));
}
}
}
答案 0 :(得分:5)
代码中的一个小错误:
您不需要数组中的第一个值来初始化循环变量i
,只需要索引值,您希望循环从。
要记住的一个棘手的事情是索引从0开始,但我们,人类从1开始计算。(我在第一次编辑答案时也犯了错误)所以当起始值为奇数时,将打印带有偶数序号的字符。
索引的开始是一个必须经常记住的常见问题...
此外,您可以直接打印字符,此处不需要Arrays.toString()方法:
System.out.println(t[index]);
够了。
奇怪的字符:将i
设置为0:这将打印第1个,第3个...字符
for(int i = 0; i < t.length; i = i + 2){
System.out.println(t[i]);
}
甚至是chars:将i
设置为1:这将打印第2,第4 ...字符
for(int i = 1; i < t.length; i = i + 2){
System.out.println(t[i]);
}
此外,您甚至不需要创建char数组,可以使用String.charAt(int index)来实现此目的:
String even_odd = sc.next();
for(int i = 0; i < even_odd.length(); i = i + 2){
System.out.println(even_odd.charAt(i));
}
另外,为了更好,您可以将其提取到一个函数中,并重用该功能:
private static void printChars(String input, boolean even) {
int i = 0;
if(even) { //if we need the even chars, start from 1;
i=1;
}
for(; i < input.length(); i = i + 2){
System.out.println(input.charAt(i));
}
}
然后你的主要方法就是这样:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String even_odd = sc.next();
char[] t = even_odd.toCharArray();
System.out.println(Arrays.toString(t));
//calling the function for even numbers
printChars(even_odd, true);
//calling the function for odd numbers
printChars(even_odd, false);
}
请记住重复错误。 重用 - &gt;好强>
答案 1 :(得分:3)
使用0
代替t[0]
for(int i = 0; i < t.length; i = i + 2){
目前i
将保留102
,其为字母f
的ASCII值,并且由于条件而不会进入循环。
为什么i
会保留char
值,因为Widening primitive conversion - Java允许
char to int,long,float或double
答案 2 :(得分:1)
非常简单。只需输入if(i % 2 == 0)
即可确定是否打印角色。
此外,不需要Arrays.toString(t[i])
。将其更改为t[i]
。
答案 3 :(得分:0)
试试这个
奇
char[] arr={'f','i','r','e','t','r','u','c','k'};
for(int i=0;i<arr.length;i++){
if(i%2==1){
System.out.print(arr[i]);
}
}
Out put
ierc
即使
char[] arr={'f','i','r','e','t','r','u','c','k'};
for(int i=0;i<arr.length;i++){
if(i%2==0){
System.out.print(arr[i]);
}
}
Out put
frtuk
答案 4 :(得分:0)
只是一个小错误!你很亲密这应该解决它。
for(int i = 0; i < t.length; i = i + 2){
答案 5 :(得分:0)
你的for语句有错误,不是int i = t [0]但是应该是int i = 0;否则它将在阵列的污垢位置上取字符的ASCII值。
答案 6 :(得分:0)
这会遍历你的字符串并打印出你想要的东西。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String even_odd = sc.next();
System.out.println("Odd Characters");
for(int i = 0; i<even_odd.length(); i++){
if(i%2==0){
System.out.println(even_odd.charAt(i));
}
}
System.out.println("Even Characters");
for(int i = 0; i<even_odd.length(); i++){
if(i%2==1){
System.out.println(even_odd.charAt(i));
}
}
}
答案 7 :(得分:0)
试一下
<p id="basicExample">
<tr>
<td class="right"><b>Start Time: </b></td>
<td class="left">
<input type="text" name="StartDate" id="StartDate" value="09/02/2016" class="date start" />
<input type="text" name="StartTime" id="StartTime" value="2:00pm" size="20" class="time start"/>
</td>
</tr>
<tr>
<td class="right"><b>End Time: </b></td>
<td class="left">
<input type="text" name="EndDate" id="EndDate" value="09/02/2016>" class="date end"/>
<input type="text" name="EndTime" id="EndTime" value="3:00pm" size="20" class="time end"/>
</td>
</tr>
</p>
答案 8 :(得分:0)
import java.io. ; import java.util。;
公共类解决方案{
/**
*
* @param args
*/
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT.
* Your class should be named Solution. */
Scanner scanner = new Scanner(System.in);
int totalStrings = scanner.nextInt();
String nextString = null;
while(scanner.hasNext()) {
nextString = scanner.next();
int stringsCount = totalStrings;
Solution stringInterleaving = new Solution();
int startIndexEven=0,incrementEven=2;
int startIndexOdd=1,incrementOdd=2;
int printedCharCountEven = 0;
int printedCharCountOdd = 0;
if(nextString!=null && nextString.length()>0) {
printedCharCountEven =
stringInterleaving.printChars(nextString, startIndexEven,incrementEven);
if(printedCharCountEven>0) {
System.out.print(" ");
}
printedCharCountOdd =
stringInterleaving.printChars(nextString, startIndexOdd,incrementOdd);
}
if(printedCharCountEven>0 || printedCharCountOdd>0) {
System.out.println();
}
}
if(scanner!=null) {
scanner.close();
}
}
/**
*
* @param input
*/
private int printChars(String input,int startIndex,int increment) {
int printedCharCount = 0;
if(input!=null && input.length()>0) {
for(int i=startIndex;i<input.length();) {
System.out.print(input.charAt(i));
i=i+increment;
printedCharCount++;
}
}
return printedCharCount;
}
}