我一直在嘗試用 Java 8 解決 Hackerrank 的 30 天代碼中的第 6 天。我的輸出通常是正確的,但開頭多出了一行。有什么辦法可以擺脫它嗎?
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
for(int i = 0; i <= T; i ){
String SJ = scanner.nextLine();
if(SJ.length() % 2 == 1){
for(int k = 0; k < (SJ.length() 1)/2; k ){
System.out.print(SJ.charAt(k*2));
}
System.out.print(" ");
for(int j = 0; j < (SJ.length()-1)/2; j ){
System.out.print(SJ.charAt(j*2 1));
}
}
else{
for(int k = 0; k < SJ.length()/2; k ){
System.out.print(SJ.charAt(k*2));
}
System.out.print(" ");
for(int j = 0; j < SJ.length()/2; j ){
System.out.print(SJ.charAt(j*2 1));
}
}
System.out.print("\n");
}
scanner.close();
}
}
uj5u.com熱心網友回復:
問題是scanner.nextInt()讀取一個整數但將鏈接中斷“\ n”留在記憶體緩沖區中。因此,回圈的第一次迭代讀取換行符。額外的行是sb.append("\n")第一次迭代的結果。
int T = scanner.nextInt();
for(int i = 0; i <= T; i ){
String SJ = scanner.nextLine(); //first iteration read is the empty line
...
sb.append("\n");
}
您需要使用換行符,以免在回圈中讀取它。
int T = scanner.nextInt();
scanner.nextLine(); // <=== consume line break
for(int i = 0; i <= T; i ){
String SJ = scanner.nextLine();
...
sb.append("\n");
}
uj5u.com熱心網友回復:
在不更改代碼結構的情況下,最簡單的方法是直到最后才列印。使用 StringBuffer 或 StringBuilder 保存輸出,然后在列印之前清理不需要的內容。
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int T = scanner.nextInt();
for(int i = 0; i <= T; i ){
String SJ = scanner.nextLine();
if(SJ.length() % 2 == 1){
for(int k = 0; k < (SJ.length() 1)/2; k ){
//System.out.print(SJ.charAt(k*2));
sb.append(SJ.charAt(k*2));
}
//System.out.print(" ");
sb.append(" ");
for(int j = 0; j < (SJ.length()-1)/2; j ){
//System.out.print(SJ.charAt(j*2 1));
sb.append(SJ.charAt(j*2 1));
}
}
else{
for(int k = 0; k < SJ.length()/2; k ){
//System.out.print(SJ.charAt(k*2));
sb.append(SJ.charAt(k*2));
}
//System.out.print(" ");
sb.append(" ");
for(int j = 0; j < SJ.length()/2; j ){
//System.out.print(SJ.charAt(j*2 1));
sb.append(SJ.charAt(j*2 1));
}
}
//System.out.print("\n");
sb.append("\n");
}
String str = sb.toString().replaceFirst("^\\s ", "") ;
System.out.print(str) ;
scanner.close();
}
}
uj5u.com熱心網友回復:
您可以使用 formatter 選項將值格式化為貨幣:
series: [{
type: 'map',
name: 'Purchases $',
states: {
hover: {
color: '#BADA55',
},
},
dataLabels: {
enabled: true,
format: '{point.name}',
formatter: function() {
return '$' this.y;
}
},
allAreas: true,
data: this.model,
}],
您不能直接從查詢中訪問資料。您需要使用快照偵聽器來獲取資料。
您可以使用查詢方法從查詢中獲取資料。
查詢(collectionRef,where(...q),orderBy(...ob),limit(...lmt))
您可以使用 onSnapshot 方法從快照偵聽器獲取資料。
onSnapshot(collectionRef, snapshot => {
let results = []
snapshot.docs.forEach(doc => {
results.push({ ...doc.data(), id: doc.id })
})
// update values
documents.value = results
})
快照偵聽器將從查詢中回傳資料。
一個潛在的問題可能是您的 CSV 檔案末尾多了一行。嘗試洗掉多余的行,看看是否能解決問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/497337.html
